/엔지니어/트러블슈팅/SSL 인증서 만료·갱신 실패 해결 — certbo
트러블슈팅초급UbuntuDebianSSLcertbotLet's Encrypt

SSL 인증서 만료·갱신 실패 해결 — certbot renew 오류 완전 정리

NET::ERR_CERT_DATE_INVALID, certbot renew 실패, 포트 80 차단, Nginx reload 실패 등 Let's Encrypt SSL 인증서 갱신 오류를 단계별로 해결하는 가이드.

브라우저에 NET::ERR_CERT_DATE_INVALID 또는 Your connection is not private 가 뜬다면 SSL 인증서가 만료된 것입니다.


현재 인증서 만료일 확인

Bash
# 도메인 인증서 만료일 확인 (외부에서)
echo | openssl s_client -connect 도메인:443 2>/dev/null | openssl x509 -noout -dates

# 로컬 certbot 인증서 목록
sudo certbot certificates

즉시 갱신 시도

Bash
sudo certbot renew --dry-run    # 테스트 (실제 갱신 안 함)
sudo certbot renew              # 실제 갱신

성공 시:

CODE
Congratulations, all renewals succeeded

실패 시 아래 원인별로 확인합니다.


원인 1 — 포트 80이 막혀 있음

Let's Encrypt는 HTTP-01 챌린지를 위해 포트 80이 반드시 열려 있어야 합니다.

Bash
# 포트 80 리스닝 확인
sudo ss -tlnp | grep :80

# UFW 방화벽 확인
sudo ufw status | grep 80

# 없으면 허용
sudo ufw allow http
Bash
# Nginx가 실행 중인지 확인 (standalone 모드는 중지 필요)
sudo systemctl status nginx

원인 2 — Nginx/Apache 설정 오류로 플러그인 실패

Bash
# Nginx 설정 검증
sudo nginx -t

# 갱신 시 웹서버 플러그인 명시
sudo certbot renew --nginx       # Nginx 사용 시
sudo certbot renew --apache      # Apache 사용 시

# standalone 모드 (웹서버를 잠깐 중지)
sudo systemctl stop nginx
sudo certbot renew --standalone
sudo systemctl start nginx

원인 3 — 도메인 DNS가 서버를 가리키지 않음

Bash
# 도메인이 현재 서버 IP를 가리키는지 확인
dig +short 도메인
curl -s ifconfig.me   # 서버 공인 IP

두 값이 다르면 DNS 설정 문제입니다. DNS가 맞다면 전파 대기(최대 48시간) 후 재시도합니다.


원인 4 — Rate limit 초과

Let's Encrypt는 도메인당 주 5회 발급 제한이 있습니다.

Bash
# 갱신 로그 확인
sudo tail -50 /var/log/letsencrypt/letsencrypt.log | grep -i "rate|limit"

Rate limit에 걸렸다면 7일 대기 후 재시도하거나, 스테이징 서버로 테스트합니다:

Bash
sudo certbot renew --dry-run --staging

자동 갱신 설정 확인

Bash
# 자동 갱신 타이머 상태 확인
sudo systemctl status certbot.timer
sudo systemctl list-timers | grep certbot

# 타이머가 없으면 cron 확인
sudo crontab -l | grep certbot
cat /etc/cron.d/certbot
Bash
# 자동 갱신 cron이 없으면 추가
echo "0 3 * * * root certbot renew --quiet" | sudo tee /etc/cron.d/certbot

갱신 후 Nginx 반영

Bash
sudo nginx -t && sudo systemctl reload nginx

갱신 후에도 브라우저 캐시가 남아 있을 수 있습니다. Ctrl+Shift+R 로 강제 새로고침하거나 시크릿 창으로 확인하세요.

#SSL#certbot#Let's Encrypt#인증서 갱신#트러블슈팅#HTTPS#Nginx
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.