⛏️/LINUX | AWS

[AWS] Let's Encrypt를 통한 SSL/TLS 인증서 활용

defyuil 2024. 1. 3. 10:32

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 으로 확인하면 보안이 적용된 페이지가 보임!