CS 상식/보안

HTTPS 사용을 위해 Nginx에서 certbot 활용하기

SparkIT 2025. 1. 3. 19:25

애플리케이션을 실제로 배포할 때는 보안을 위해 http 대신 https 사용을 무조건해야합니다. 이때 웹 서버로 많이 사용되는 nginx에서 certbot을 활용하면 간단하게 https 설정을 적용할 수 있습니다. Certbot은 Let's Encrypt의 공식 클라이언트로 SSL/TLS 인증서 발급과 관리 기능을 제공합니다. 이런 Certbot을 활용한 HTTPS 적용 방법에 대해 공유합니다.

 


HTTPS 적용하는 방법

Certbot 설정

1. certbot 설치하기

sudo apt-get update
sudo apt-get install certbot
sudo apt-get install python3-certbot-nginx # nginx 플러그인

 

2. SSL/TLS 인증서 발급하기

sudo certbot certonly --nginx -d mytest.com -d www.mytest.com

기본적으로 HTTPS는 도메인에 적용하는 것이므로 도메인이 필요합니다. 자신의 도메인(ex. mytest.com)을 위와 같이 넣어주세요.

 

3. 인증서 자동 갱신 설정하기

sudo crontab -e

# 아래 내용 추가
0 0 * * 1 /usr/bin/certbot renew --quiet

기본적으로 certbot으로 발급받은 인증서는 90일의 유효기간을 가집니다. 그래서 90일마다 갱신이 필요하죠. 이를 위해 90일마다 자동으로 인증서를 새롭게 발급받도록 설정합니다.

 

 

 

Nginx 설정

nginx 관련 설정 파일은 다음과 같이 수정합니다.

1. nginx.conf 설정하기

server {
    listen 80;
    server_name mytest.com www.mytest.com;

    location / {
	 	생략
    }

    # 인증서 관련 설정
    ssl_certificate /etc/letsencrypt/live/mytest.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mytest.com/privkey.pem;

}

위에서 발급받은 인증서는 기본적으로 '/ etc / letsencrypt / live' 하위에 존재할 것입니다. 이 경로에 위치하는 pem을 활용해 ssl 설정을 적용합니다.

 

2. nginx 재시작하기

sudo systemctl restart nginx

# 혹은 아래 명령어
sudo service nginx reload

# 혹은 아래 명령어
sudo nginx -s reload

 

 

 

마무리

위 과정을 모두 마치면 mytest.com(자신의 도메인명)에 접속하면 https로 접속되는 모습을 확인할 수 있을 것입니다.