728x90
Let's Encrypt를 통한 SSL/TLS 인증서 생성
- https://letsencrypt.org
- 인증 절차가 단순해서 단 한 줄 명령어로 인증서 발급이 가능
- 발급 대기 시간 없이 바로 발급
- nginx, apache와 같은 웹 서버에 맞추어 자동 옵션이 설정되도록 설치 가능
- 인증 유효기간이 90일(자동으로 인증 갱신 가능)
- 무료 - AWS -> EC2 인스턴스 생성
- 이름 : SecureWeb
- AMI : Kenel5
- 인스턴스 유형 : t2.micro
- 키페어 : 기존
- 기존 보완 그룹 선택 : ssh, web
-> 인스턴스 시작 - MobaXterm 원격 접속
- 아파치 웹 서버 설정
sudo yum install -y httpd
sudo systemctl start httpd
sudo vi /var/www/html/index.html
=> S2.itwillbs.com(그림1 좌, 우) - Certbot 설치
- Let's Encrypt는 ACME 프로토콜을 사용하여 설정한 도메인명의 유효성을 확인하고,
인증서를 발급
※ACME(Automatic Certification Management Environoment)
- Let's Encrypt CA(Certificate Authority)로부터 SSL/TLS 인증서를 발급 받고 싶다면 ACME 클라이언트 소프트웨어
설치해야함
- Let's Encrypt에서는 그 중 사용하기 편리한 Certbot의 사용을 권장함
sudo amazon-linux-extras install epel -y
sudo yum install -y certbot
certbot --version
certbot --help => 발급에 대한 옵션을 볼 수 있음 ex) --nginx, --apache, --standalone, --webroot, --manual 등 - Let's Encrypt SSL/TLS 인증서 발급
1) webroot 2) 사용하는 웹 서버의 인증서를 발급 3) Standalone 4) DNS
webroot를 이용해서 수동으로 인증서 발급 받기
- 사이트 디렉토리 내에 인증서 유효성을 확인할 수 있는 파일을 업로드하여 인증서를 발급 받는 방법
- 서버 내에 .well-known 디렉토리가 있을 곳을 지정
특정 폴더를 만들고 폴더에서 letsencrypt.conf파일을 만들고 이를 웹 서버 설정 파일에서 읽어옴
sudo mkdir -p /var/www/letsencrypt/.well-known/acme-challenge
=> -p 옵션으로 폴더가 없으면 자동으로 만들어줌. acme-challenge 디렉토리를 생성
sudo certbot certonly --webroot --webroot-path=/var/www/letsencrypt -d s2.itwillbs.com -m 실제쓰는이메일주소
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
=> 해당 경로에 .well-know과 관련된 파일이 없다는 404 not found 에러 발생
에러해결
왼쪽의 Sessions -> SecureWeb 더블 클릭 -> 새로운 접속 탭을 생성
-> 첫 번째 접속 탭
sudo certbot certonly --manual --email 이메일 -d s2.itwillbs.com
=> Create a file containing just this data:
X0d5hIzhsrbJyxu6qFUZaJLP7IAdmVMlvIpJJoatSV0.yxxsXfcESAvyjwGbz02A-OSOQSyYJQxnUwb0D4bwzf8
위의 내용을 복사
-> 두 번째 접속 탭
sudo -sE
cd /var/www/html
mkdir -p .well-known/acme-challenge
ls -a => .well-known 디렉토리 확인
cd .well-known/acme-challenge
sudo vi X0d5hIzhsrbJyxu6qFUZaJLP7IAdmVMlvIpJJoatSV0(복사한 앞부분까지)
i를 눌러 insert mode로 변경하고 전체를 내용으로 붙여넣기
X0d5hIzhsrbJyxu6qFUZaJLP7IAdmVMlvIpJJoatSV0.yxxsXfcESAvyjwGbz02A-OSOQSyYJQxnUwb0D4bwzf8
esc :wq
웹브라우저에
s2.itwillbs.com/.well-known/acme-challenge/X0d5hIzhsrbJyxu6qFUZaJLP7IAdmVMlvIpJJoatSV0 입력하면 data의
모든 내용이 화면에 보임(그림 2)
=> certbot이 원하는 경로
's2.itwillbs.com/.well-known/acme-challenge/X0d5hIzhsrbJyxu6qFUZaJLP7IAdmVMlvIpJJoatSV0'의 파일이
생성되었으므로 data를 확인해서 인증서를 발급
-> 첫 번째 접속 탭으로 이동해서 엔터키를 입력 - Apache에 추가 설정
sudo vi /etc/httpd/conf/httpd.conf
==============================================================
:set nu
i를 눌러 insert mode 내용 추가 가장 마지막 라인에 추가
364 <VirtualHost *:80>
365 DocumentRoot /var/www/html
366 ServerName itwillbs.com
367 ServerAlias s2.itwillbs.com
368 </VirtualHost>
369 <VirtualHost 18.208.131.107:443>
370 DocumentRoot /var/www/html
371 ServerName s2.itwillbs.com
372
373 SSLEngine on
374 SSLCertificateFile /etc/letsencrypt/live/s2.itwillbs.com/cert.pem
375 SSLCertificateKeyFile /etc/letsencrypt/live/s2.itwillbs.com/privkey.pem
376 SSLCACertificateFile /etc/letsencrypt/live/s2.iwillbs.com/fullchain.pem
377 </VirtualHost>
esc :wq
==============================================================
Apache에서 SSL 접속 시 참고(사용)하는 설정 파일 /etc/httpd/conf.d/ssl.conf 수정
sudo yum install -y certbot python2-certbot-apache
=> mod_ssl.x86_64 1:2.4.58-1.amzn2 설치
sudo vi /etc/httpd/conf.d/ssl.conf
100번 라인
SSL.conf에서 지정된 위치가 있으므로 letsencrypt를 통해 다운로드 받은 인증서를 지정된 위치로 복사
esc :q
sudo cp /etc/letsencrypt/live/s2.itwillbs.com/cert.pem /etc/pki/tls/certs/cert.crt
sudo cp /etc/letsencrypt/live/s2.itwillbs.com/privkey.pem /etc/pki/tls/private/privkey.key
sudo cp /etc/letsencrypt/live/s2.itwillbs.com/fullchain.pem /etc/pki/tls/certs/
sudo vi /etc/httpd/conf.d/ssl.conf
100 SSLCertificateFile /etc/pki/tls/certs/localhost.crt
=> 100 SSLCertificateFile /etc/pki/tls/certs/cert.crt로 변경
107 SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
=> 107 SSLCertificateKeyFile /etc/pki/tls/private/privkey.key로 변경
esc :wq - 아파치 웹 서버 재시작
sudo systemctl restart httpd - EC2 보안그룹 -> web -> 인바운드 규칙 추가
-> HTTPS 포트번호 : 443(자동입력, 변경불가), 사용자 지정 : anywhere-IPv4(0.0.0.0/0, 모든 IP 허용) - 웹 브라우저에서 https://s2.itwillbs.com(그림 3.)
728x90
'KDT > Cloud' 카테고리의 다른 글
240315 Cloud - Git & GitHub 2 (0) | 2024.03.15 |
---|---|
240308 Cloud - Git & GitHub 1 (0) | 2024.03.08 |
240216 Cloud (0) | 2024.02.16 |
240202 Cloud (0) | 2024.02.02 |
240124 Cloud (0) | 2024.01.24 |