1. 문제 상황
Let's Encrypt SSL 인증서는 90일마다 만료되며, 수동으로 갱신하는 것은 번거롭습니다. 특히 Nginx를 사용하는 경우 포트 80 충돌로 인한 갱신 실패가 자주 발생할 수 있습니다.
2.1. Certbot Nginx 플러그인 설치
sudo apt-get install python3-certbot-nginx
2.2. 인증서 갱신 설정 수정
sudo nano /etc/letsencrypt/renewal/your-domain.com.conf
//설정파일 내용
version = 1.21.0
archive_dir = /etc/letsencrypt/archive/your-domain.com
cert = /etc/letsencrypt/live/your-domain.com/cert.pem
privkey = /etc/letsencrypt/live/your-domain.com/privkey.pem
chain = /etc/letsencrypt/live/your-domain.com/chain.pem
fullchain = /etc/letsencrypt/live/your-domain.com/fullchain.pem
[renewalparams]
authenticator = nginx
installer = nginx
account = your-account-hash
server = https://acme-v02.api.letsencrypt.org/directory
2.3. 자동 갱신 설정
sudo crontab -e
다음 내용 추가:
0 0,12 * * * /usr/bin/certbot renew --quiet --nginx
2.4. 설정 테스트
# 갱신 테스트 (실제 갱신하지 않음)
sudo certbot renew --nginx --dry-run
3.1. 인증서 만료일 확인
sudo tail -f /var/log/letsencrypt/letsencrypt.log
3.2. 자동 갱신 로그 확인
sudo tail -f /var/log/letsencrypt/letsencrypt.log
3.3. Cron 작업 확인
sudo crontab -l
만약 갱신이 실패하는 경우:
# 수동 갱신 시도
sudo certbot renew --force-renewal --nginx
# 로그 확인
sudo tail -f /var/log/letsencrypt/letsencrypt.log
방화벽 설정에서 포트 80과 443이 열려있어야 함
Nginx 설정 파일에 SSL 관련 설정이 올바르게 되어있어야 함
도메인의 DNS 설정이 올바르게 되어있어야 함
이제 SSL 인증서가 자동으로 갱신되며, 만료 걱정 없이 안전한 웹 서비스를 운영할 수 있습니다.