웹사이트 보안은 이제 선택이 아닌 필수입니다. 특히 SSL 인증서는 데이터를 암호화하여 사용자와 서버 간의 안전한 통신을 보장하는 핵심 요소입니다.
Let’s Encrypt는 무료로 SSL 인증서를 제공하여 웹 보안을 강화하는 데 크게 기여하고 있습니다. 하지만 Let’s Encrypt 인증서는 90일마다 갱신해야 하므로, Nginx 서버에서 자동 갱신 설정을 해두면 번거로움을 줄이고 보안을 유지할 수 있습니다.
이 포스트에서는 Certbot을 사용하여 Let’s Encrypt SSL 인증서를 자동으로 갱신하는 방법을 단계별로 안내합니다.
Let’s Encrypt 사이트 확인☜
1단계: 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/
디렉토리에 저장합니다.
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는 와일드카드 인증서도 지원합니다. 와일드카드 인증서를 사용하면 하위 도메인에 대한 인증서를 한 번에 발급받을 수 있습니다.
이 블로그 포스트가 도움이 되었기를 바랍니다!