Nginx에서 Let’s Encrypt SSL 자동 갱신 설정 완벽 가이드

웹사이트 보안은 이제 선택이 아닌 필수입니다. 특히 SSL 인증서는 데이터를 암호화하여 사용자와 서버 간의 안전한 통신을 보장하는 핵심 요소입니다.

Let’s Encrypt는 무료로 SSL 인증서를 제공하여 웹 보안을 강화하는 데 크게 기여하고 있습니다. 하지만 Let’s Encrypt 인증서는 90일마다 갱신해야 하므로, Nginx 서버에서 자동 갱신 설정을 해두면 번거로움을 줄이고 보안을 유지할 수 있습니다.

이 포스트에서는 Certbot을 사용하여 Let’s Encrypt SSL 인증서를 자동으로 갱신하는 방법을 단계별로 안내합니다.

Nginx LetsEncrypt ssl

Let’s Encrypt  사이트 확인☜

1단계: Certbot 설치

certbot

Certbot은 Let’s Encrypt 인증서를 발급하고 관리하는 데 사용되는 도구입니다. Nginx 플러그인과 함께 설치하여 Nginx 설정을 자동으로 변경할 수 있습니다.

Ubuntu를 사용 중이라면 다음 명령어를 실행하여 Certbot과 Nginx 플러그인을 설치하세요.

sudo apt update
sudo apt install certbot python3-certbot-nginx

 

2단계: Nginx 설정 파일 수정

Certbot이 인증서를 발급받기 위해서는 Nginx 설정 파일이 올바르게 구성되어 있어야 합니다.

/etc/nginx/sites-available/default 파일을 열고 다음과 같이 수정하세요.

server {
    listen 80;
    server_name your_domain.com;

    location /.well-known/acme-challenge/ {
        root /var/www/html;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name your_domain.com;

    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
    • listen 80: 80번 포트(HTTP)로 들어오는 요청을 처리합니다.
    • server_name your_domain.com: 자신의 도메인으로 변경해야 합니다.
    • location /.well-known/acme-challenge/: Let’s Encrypt의 ACME 챌린지를 위한 경로입니다. Certbot이 인증서를 발급받기 위해 필요한 파일들을 이 경로에 저장합니다.
    • return 301 https://hostrequest_uri: HTTP 요청을 HTTPS로 리디렉션합니다.
    • listen 443 ssl: 443번 포트(HTTPS)로 들어오는 요청을 처리합니다.
  • ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem: SSL 인증서 파일의 경로입니다.
  • ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem: SSL 개인 키 파일의 경로입니다.
  • location /: 모든 요청을 프록시 서버로 전달합니다.
  • proxy_pass http://localhost:8080: 프록시 서버의 주소입니다.
  • proxy_set_header: 프록시 서버에 전달하는 헤더를 설정합니다.

 

3단계: 인증서 발급

Certbot을 사용하여 Let’s Encrypt 인증서를 발급받습니다. 다음 명령어를 실행하세요.

sudo certbot --nginx -d your_domain.com
  • –nginx: Nginx 플러그인을 사용하여 Nginx 설정을 자동으로 변경합니다.
  • -d your_domain.com: 인증서를 발급받을 도메인입니다. 자신의 도메인으로 변경해야 합니다.

Certbot은 Nginx 설정을 자동으로 변경하고

인증서를 발급받아 /etc/letsencrypt/live/your_domain.com/ 디렉토리에 저장합니다.

SSL https

4단계: 자동 갱신 설정

Let’s Encrypt 인증서는 90일마다 갱신해야 합니다. 자동 갱신을 위해 Crontab을 설정합니다. 다음 명령어를 사용하여 Crontab을 엽니다.

sudo crontab -e

Crontab 파일에 다음 줄을 추가하여 인증서를 갱신하고 Nginx를 재시작합니다.

0 3 * * * /usr/bin/certbot renew --quiet --renew-hook="systemctl reload nginx"
  • 0 3 * * *: 매일 새벽 3시에 실행합니다.
  • /usr/bin/certbot renew: Certbot을 사용하여 인증서를 갱신합니다.
  • –quiet: 갱신 과정에서 출력을 최소화합니다.
  • –renew-hook=”systemctl reload nginx”: 인증서 갱신 후 Nginx를 재시작합니다.

 

마무리

이제 Nginx 서버에서 Let’s Encrypt SSL 인증서가 자동으로 갱신됩니다. 더 이상 인증서 만료를 걱정하지 않아도 됩니다. 이 포스트가 여러분의 웹사이트 보안 강화에 도움이 되었기를 바랍니다. 😊

 

추가 팁

  • Certbot은 다양한 옵션을 제공합니다. certbot --help 명령어를 사용하여 Certbot의 모든 옵션을 확인할 수 있습니다.
  • 인증서 갱신 과정을 테스트하려면 sudo certbot renew --dry-run 명령어를 사용하세요.
  • Nginx 설정 파일을 수정할 때는 항상 백업해두는 것이 좋습니다.
  • Let’s Encrypt는 와일드카드 인증서도 지원합니다. 와일드카드 인증서를 사용하면 하위 도메인에 대한 인증서를 한 번에 발급받을 수 있습니다.

이 블로그 포스트가 도움이 되었기를 바랍니다!

Leave a Comment