본문으로 바로가기

Let's Encrypt + Nginx SSL(https 443) 적용하기

category Server/Nginx 2023. 7. 29. 22:28
728x90
반응형

DDD 동아리 진행 중 API 서버의 SSL 적용이 필요해서 무료 인증서인 Let's Encrypt 를 해보기로 했다.

Docker 로 Blue / Green 배포 환경이여서 Docker 자체 내에 심어야하는 줄 알았는데 그냥 nginx 기준으로 심으면 되는 거였다.

Nginx 설치

아래 링크를 확인하여 설치 및 설정


Ubuntu 기준 certbot 설치

  1. Ubuntu 16.04 이하
    apt-get update
    sudo apt-get install certbot
    apt-get install python-certbot-nginx
  2. Ubuntu 18.04 이상
    apt-get update
    sudo apt-get install certbot
    apt-get install python3-certbot-nginx

Certbot 이용하여 SSL 인증서 발급

  1. 단일 도메인
    sudo certbot --nginx -d example.com
  2. 여러개 도메인
    sudo certbot --nginx -d example.com -d www.example.com

nginx 플러그인을 이용하여 도메인을 쉽게 추가할 수 있다. 성공적으로 완료되면 도메인 설정 파일 내에 443 관련 소스가 자동으로 추가되어 있을 것이다.


443 관련 설정

AWS 에서 인바운드에 HTTPS 포트 개방을 해준다.


Let’s Encrypt 인증서 자동 갱신

먼저 아래 명령어를 통해 똑바로 실행되는지 확인한다.

certbot renew --dry-run

위 명령어는 실제로 재발급 하지 않고 테스트 용도이다. 만약 제대로 되지 않으면 출력되는 오류에 대해 처리를 해야한다.

certbot 매일 실행할 명령을 추가한다. 이 예에서는 매일 정오에 명령을 실행한다. 이 명령은 서버의 인증서가 다음 30일 이내에 만료되는지 확인하고 만료되면 갱신한다. --quiet 지시문은 출력 certbot을 생성하지 않도록 한다

crontab 파일을 연다

sudo crontab -e

그리고 맨 아래에 다음을 추가한다.

0 12 * * * /usr/bin/certbot renew --quiet

파일을 저장하고 닫는다.


Error

  1. 처음에 sudo certbot certonly -d "example.com" --manual --preferred-challenges dns 처럼 dns 및 manual 로 발급 받아서
    TXT Record 값을 AWS Route 53 에 등록하는 방식으로 했는데 이렇게 하니까 재발급 하려고 할 때 제대로 이루어지지 않았다.
    TXT Record 값을 얘가 알아서 바꿔줄수 없기 때문이라서 (방법이 있는것 같긴한데 쉬운 길로..) 인증서를 다시 삭제 하고
    sudo certbot --nginx -d "example.com" 처럼 nginx 플러그인을 통해 쉽게 적용 시켰다.

참고

참고한 사이트

728x90
반응형

'Server > Nginx' 카테고리의 다른 글

Nginx Domain 설정  (1) 2023.03.20
Nginx 설치  (0) 2023.03.20