환경
- 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은 필수
위에서 작성한 설정파일의 문법이 맞나 확인해주는 명령어를 입력 후, 정상이라면 nginx 서비스를 재기동 합니다.
$ sudo nginx -t
$ sudo service nginx reload
이후 Certbot을 Nginx에 적용하기전 웹서버의 TCP:80 포트와 TCP:443 포트의 방화벽을 열어주는 작업이 필요 합니다.
저는 클라우드 환경에서 EC2 인스턴스를 사용해 작업중이기 때문에 ufw 등의 OS 방화벽을 사용하지 않고.
AWS 웹콘솔을 사용하여 보안그룹을 수정하여 줬습니다.
3. Certbot을 Nginx에 적용하기.
$ sudo certbot --nginx
원하는 도메인을 certbot에 등록시켜주는 작업
$ sudo certbot --nginx -d domain.example.com/
$ sudo certbot renew --dry-run
인증서 자동갱신이 설정되었는지 확인하는 명령어 입니다.(기본적으로 certbot이 발급하는 인증서는 90일간 유효하지만 자동으로 갱신 되어집니다.)
에러가 나타나지 않으면 renewal이 정상적으로 작동하는것.
Ubuntu의 경우 /etc/cron.d/certbot 파일이 생성 되어진 것을 확인 할 수 있습니다.
https://www.ssllabs.com/ssltest/
위 사이트에서 SSL이 정상적으로 적용된 것인 확인 및 평가 받을 수 있습니다.