← 문제 라이브러리
Security 중급 16분

Let's Encrypt 자동 갱신이 한 달 내내 실패해 인증서가 만료됨

일요일 아침, 회사 홈페이지와 고객 포털에 '인증서가 만료되었습니다' 경고가 뜬다는 연락이 왔습니다.

검수된 문제무료
시나리오

일요일 아침, 회사 홈페이지와 고객 포털에 '인증서가 만료되었습니다' 경고가 뜬다는 연락이 왔습니다. 인증서는 Let's Encrypt로 받고 certbot 타이머가 매일 자동 갱신을 돌리게 되어 있었습니다. 만료 경고 메일은 계정에 등록된 퇴사자 주소로만 갔습니다. 한 달 전쯤 모든 HTTP 요청을 HTTPS로 보내도록 Nginx 설정을 바꿨습니다. 담당자는 certbot이 멈춘 것 같다며 다시 설치하려 합니다. 같은 서버의 다른 도메인도 곧 만료가 다가옵니다.

단서
certbot renew 결과
$ sudo certbot renew
Certbot failed to authenticate some domains (authenticator: webroot). The Certificate Authority reported these problems:
  Domain: acme.dev
  Type:   unauthorized
  Detail: 203.0.113.10: Invalid response from https://acme.dev/.well-known/acme-challenge/Xy9…: 404

$ systemctl list-timers | grep certbot
Sun 2026-09-27 12:41  certbot.timer  certbot.service
Nginx 설정 (한 달 전 변경)
server {
    listen 80;
    server_name acme.dev;
    return 301 https://$host$request_uri;   # 추가
    location /.well-known/acme-challenge/ { root /var/www/letsencrypt; }
}
server {
    listen 443 ssl;
    server_name acme.dev;
    root /var/www/site;   # acme-challenge location 없음
}

과제 원인을 좁히고, 서비스를 되살리는 순서(검증 포함)와 재발 방지책을 적어 보세요.

먼저 볼 것
  • 자동 갱신이 '돌았는지'와 '성공했는지' 구분하기
  • 인증 기관이 소유 확인 파일을 어디서 찾는지
점검 체크리스트
  1. certbot renew 의 실패 사유
  2. 80번 서버 블록에서 challenge 경로가 리디렉션보다 먼저 처리되는지
  3. 443번 서버 블록이 challenge 파일을 서비스하는지