[AWS] Let's Encrypt를 통한 SSL/TLS 인증서 활용
Let's Encrypt를 통한 SSL/TLS 인증서 활용
1. https://letsencrypt.org/
Let's Encrypt
letsencrypt.org
- 인증 절차가 단순해 단 한 줄 명령어로 발급 가능
- 발급 대기 시간 없이 바로 발급
- nginx, apache와 같은 웹 서버에 맞추어 자동 옵션이 설정되도록 설치 가능
- 인증 유효기간이 90일(자동으로 인증 갱신 가능)
- 무료!
2. 원격접속 및 아파치 웹 서버 설정
sudo yum install -y httpd
sudo systemctl start httpd
sudo vi /var/www/html/index.html
👉 s20.itwillbs.com
3. Cerbot 설치
- Let's Encrypt는 ACME 프로토콜을 사용하여 설정한 도메인명의 유효성을 확인하고 인증서를 발급
ACME(Automatioc Certification Management Enviornment)
- 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
👉 발급에 대한 옵션은 --nginx, --apache, --standalon, --webroot, --manual 등이 있음
4. Let's Encrypt SSL 인증서 발급
1) webroot
2) 사용하는 웹서버의 인증서 발급
3) Strandalone
4) DNS
[webroot로 SSL 인증서 발급]
- 사이트 디렉터리 내에 인증서 유효성을 확인할 수 있는 파일을 업로드 하여 인증서를 발급받는 방법
- 서버 내에 .well-known 디렉터리가 있을 곳을 지정
- 1) 특정 폴더를 만들고 2) 폴더에서 letencrypt.conf 파일을 만들고 3) 이를 웹 서버 설정 파일에서 읽어 옴
sudo mkdir -p /var/www/letsencrypt/.well-known/acme-challenge
sudo certbot certonly --webroot --webroot-path=/var/www/letsencrypt -d s20.itwillbs.com(도메인명) -m 이메일주소
Y
Y
에러 발생! 해당 경로에 .well-known과 관련된 파일이 없다는..404 not found 에러 발생
MobaXterm 왼쪽 세션창에서 현재 세션을 더블클릭해서 탭을 하나 더 생성
[첫 번째 접속 탭]
http://.../acme-challenge/ 뒤에 부분을 복사
ex) http://s20.itwillbs.com/.well-known/acme-challenge/0L3s5lb9CK0vbVv6n-GBt7W8bH0XiAAQtIC8zBBL55Y:
[두 번째 접속 탭]
sudo -sE
cd /var/www/html (아 바본가 이거 안 해서 안됏엇음 ㅡㅡ)
mkdir -p .well-known/acme-challenge
ls -a
=> .well-known 확인!
cd .well-known/acme-challenge/acme-challenge/
[다시 첫 번째 탭]
sudo certbot certonly --manual --email mtpcyuil@gmail.com -d s20.itwillbs.com
[다시 두 번째 탭]
vi xo1FFlYENLiPe4OTEHotejP4d8LnpSbibX_zZhZH57A
i 눌러서
xo1FFlYENLiPe4OTEHotejP4d8LnpSbibX_zZhZH57A.LCPu1v0KlfVgnqs5-60GgFinbtLf1TQ5t0Jg7O-RBaM
붙여넣기
:wq
웹 브라우저에서 확인
http://s20.itwillbs.com/.well-known/acme-challenge/aUMUcJphKtJiXoXJLZeOo9s0pE4h2eq3Plbm6yQB5CM 주소창에 입력하면 data의 모든 내용이 화면에 보임!!
👉 certbot이 원하는 경로
의 파일이 생성되었으므로 data를 확인해서 인증서를 발급해준다!
[첫번째 탭]
Press Enter to Continue 화면에서 엔터키 입력!
👉 인증서가 발급됐음!!
5. Apache에 추가 설정
sudo vi /etc/httpd/conf/httpd.conf
맨 아래 줄에 추가(:set nu -> 라인 번호 보기, G 맨 아래 이동)
363 <VirtualHost *:80>
364 DocumentRoot "/var/www/html"
365 ServerName "itwillbs.com"
366 ServerAlias "s20.itwillbs.com"
367 </VirtualHost>
368 <VirtualHost 13.209.8.219:443>
369 ServerName s20.itwillbs.com
370 DocumentRoot /var/www/html
371
372 SSLEngine on
373 SSLCertificateFile /etc/letsencrypt/live/s20.itwillbs.com/cert.pem
374 SSLCertificateKeyFile /etc/letsencrypt/live/s20.itwillbs.com/privkey.pem
375 SSLCACertificateFile /etc/letsencrypt/live/s20.itwillbs.com/fullchain.pem
376 </VirtualHost>
:wq
Apache에서 SSL 접속 시 참고(사용)하는 설정파일
/etc/httpd/conf.d/ssl.conf
sudo yum install -y certbot python2-certbot-apache
sudo cp /etc/letsencrypt/live/s20.itwillbs.com/cert.pem /etc/pki/tls/certs/cert.crt
sudo cp /etc/letsencrypt/live/s20.itwillbs.com/privkey.pem /etc/pki/tls/private/privkey.key
sudo cp /etc/letsencrypt/live/s20.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(자동입력, 변경불가), 사용자 지정 : 0.0.0.0/0(모든 IP허용)
근데 이미 되어 잇음
이제 웹 브라우저에서 https://s20.itwillbs.com 으로 확인하면 보안이 적용된 페이지가 보임!