IT/Web

Let's Encrypt를 활용하여 Nginx 웹서버에 SSL 인증서 발급하기.(무료로 HTTPS 적용)

고슴도치 엔지니어 2022. 2. 16. 19:14

환경

- ubuntu 20.04 LTS (AWS EC2 환경)

 

사전준비

- Nginx가 설치된 서버와 도메인 1개

 

 

 

1. Certbot 설치 (let's encrypt 인증 자동화 도구)

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository universe
$ sudo apt-get update
$ sudo apt-get install certbot python3-certbot-nginx

이것으로 certbot 설치는 아주 간단히 완료.

 

2. Certbot 적용 전 Nginx 세팅

$ vi /etc/nginx/site-available/default

[server] 블록을 찾아서 server_name 파라미터를 수정해줍니다. (Domain으로 쓸 URL을 입력.)

- 사전에 발급 받아놓은 Domain은 필수

SSL을 적용하고 싶은 도메인을 입력 해주자.

 

위에서 작성한 설정파일의 문법이 맞나 확인해주는 명령어를 입력 후, 정상이라면 nginx 서비스를 재기동 합니다.

$ sudo nginx -t
$ sudo service nginx reload

이후 Certbot을 Nginx에 적용하기전 웹서버의 TCP:80 포트와 TCP:443 포트의 방화벽을 열어주는 작업이 필요 합니다.

저는 클라우드 환경에서 EC2 인스턴스를 사용해 작업중이기 때문에 ufw 등의 OS 방화벽을 사용하지 않고.

AWS 웹콘솔을 사용하여 보안그룹을 수정하여 줬습니다.

 

 

3. Certbot을 Nginx에 적용하기.

 

$ sudo certbot --nginx

80, 443 TCP 포트를 Open 해주지 않으면 failed 가 발생할 수 있다.

 

원하는 도메인을 certbot에 등록시켜주는 작업

$ sudo certbot --nginx -d domain.example.com/

모든 접속이 HTTPS로 Rediection 되길 원하면 2번을 선택하자.

 

 

$ sudo certbot renew --dry-run

인증서 자동갱신이 설정되었는지 확인하는 명령어 입니다.(기본적으로 certbot이 발급하는 인증서는 90일간 유효하지만 자동으로 갱신 되어집니다.)

 

에러가 나타나지 않으면 renewal이 정상적으로 작동하는것.

 

Ubuntu의 경우 /etc/cron.d/certbot 파일이 생성 되어진 것을 확인 할 수 있습니다.

 

https://www.ssllabs.com/ssltest/

 

SSL Server Test (Powered by Qualys SSL Labs)

SSL Server Test This free online service performs a deep analysis of the configuration of any SSL web server on the public Internet. Please note that the information you submit here is used only to provide you the service. We don't use the domain names or

www.ssllabs.com

위 사이트에서 SSL이 정상적으로 적용된 것인 확인 및 평가 받을 수 있습니다.