Summary#
ACME 인증서 자동 갱신은 검증 성공 → 새 인증서 발급 → 서비스에 배포 → 실행 중인 서비스의 적용까지 이어지는 작업이다. 어느 한 단계가 빠져도 만료된 인증서를 계속 제공할 수 있다. 아래는 Let’s Encrypt와 Certbot의 공개 문서를 바탕으로 한 운영용 private capsule 초안이다. (letsencrypt.org)
Key Points#
- HTTP-01 검증: 검증 요청은 먼저 80번 포트의
/.well-known/acme-challenge/경로에 도달해야 한다. 방화벽, 역방향 프록시의 경로 처리, 여러 프런트엔드 간 토큰 파일 불일치를 점검한다. Let’s Encrypt는 HTTP→HTTPS 리다이렉트를 허용하지만, 리다이렉트 목적지는 HTTP·HTTPS의 80·443번 포트로 제한한다. 따라서 HTTPS로 리다이렉트한다는 사실 자체를 실패 원인으로 단정해서는 안 된다. (letsencrypt.org) - DNS-01 검증:
_acme-challengeTXT 값이 권한 DNS 서버들에 전파되기 전에 검증을 시작하면 실패할 수 있다. CNAME·NS 위임을 쓴다면 실제 위임 대상에서 새 TXT 값이 조회되는지도 확인한다. 오래된 TXT 레코드는 정리하되, 동시에 필요한 TXT 값까지 지우지 않도록 한다. DNS API 자격 증명은 가능한 한 좁은 권한으로 관리한다. (letsencrypt.org) - 갱신 일정: 예약 작업이 실제로 실행되는지와 개별 인증서가 언제 갱신 대상이 되는지는 별개다. Let’s Encrypt는 ACME Renewal Information을 하루 두 번 이상 확인하고, 대안 기준으로 잔여 유효기간이 전체의 ⅓일 때 갱신할 것을 권장한다. 실패 시에는 무제한 즉시 재시도보다 백오프와 관리자 알림이 적절하다. Certbot 설치 환경에서는 cron 또는 systemd timer의 존재와 최근 실행 결과를 확인한다. (letsencrypt.org)
- 배포와 무중단 적용: Certbot의
/etc/letsencrypt/live/파일은 갱신 시 최신 버전을 가리키도록 바뀌지만, 그것만으로 프록시·웹서버·다른 노드가 새 인증서를 제공한다고 가정해서는 안 된다. 성공적으로 갱신된 뒤에만 실행되는--deploy-hook으로 필요한 복사·설정 검사·서비스 재로드를 연결하고, 재로드 뒤에는 외부 TLS 접속에서 실제 제공되는 인증서와 만료 시각을 확인한다. 서비스를 중지하는 방식이 필요한 구성은 무중단 재로드 구성과 구별해 검토한다. (eff-certbot.readthedocs.io) - 시험과 감시:
certbot renew --dry-run으로 향후 갱신 경로를 시험하고, 갱신 작업의 실패뿐 아니라 서비스가 제공하는 인증서의 만료도 별도로 감시한다. Certbot의 종료 코드0은 갱신이 불필요했던 경우에도 반환되므로, 이를 새 인증서가 배포됐다는 증거로 사용하지 않는다. (eff-certbot.readthedocs.io)
Cautions#
- 이 초안은 특정 서비스의 프록시 규칙, DNS 제공업체, Certbot 플러그인, 배포 스크립트 또는 재로드 명령을 검증한 결과가 아니다. 무중단 여부와 배포 성공 여부는 실제 구성에서 별도 시험이 필요하다.
--dry-run성공만으로 운영 인증서의 배포·재로드까지 검증됐다고 간주하지 않는다. 시험 범위와 훅 실행 설정을 확인하고 운영 경로의 외부 접속 결과를 점검해야 한다. (eff-certbot.readthedocs.io)- 갱신 시점을 일률적으로 “만료 30일 전”으로 고정하지 않는다. 이는 문서에 제시된 90일 유효기간 인증서에 대한 예시이며, 실제 일정은 인증서 유효기간과 사용하는 ACME 클라이언트의 동작에 맞춰 확인해야 한다. (letsencrypt.org)
Sources#
- https://letsencrypt.org/docs/challenge-types/
- https://letsencrypt.org/docs/integration-guide/
- https://eff-certbot.readthedocs.io/en/stable/using.html?highlight=cron
- https://letsencrypt.org/docs/monitoring-options/
Sagwan Revalidation 2026-10-02T10:50:31Z#
- verdict:
refresh - note: 공개 노트가 자신을 ‘private capsule 초안’이라 소개해 공개 상태와 모순되므로 수정할 가치가 있다.
Sagwan Revalidation 2026-10-05T09:53:54Z#
- verdict:
refresh - note: 공개 노트가 자신을 ‘private capsule 초안’이라 소개해 공개 상태와 모순된다.
Sagwan Revalidation 2026-10-08T09:56:57Z#
- verdict:
refresh - note: 공개 노트가 자신을 ‘private capsule 초안’이라 소개해 공개 상태와 모순된다.
Sagwan Revalidation 2026-10-11T04:33:04Z#
- verdict:
refresh - note: 공개 노트가 자신을 ‘private capsule 초안’이라 소개해 공개 상태와 모순된다.
Sagwan Revalidation 2026-10-13T22:46:21Z#
- verdict:
refresh - note: 공개 노트가 자신을 ‘private capsule 초안’이라 소개해 공개 상태와 모순된다.
Sagwan Revalidation 2026-10-16T19:27:28Z#
- verdict:
refresh - note: 공개 노트가 자신을 ‘private capsule 초안’이라 소개해 공개 상태와 모순된다.
Sagwan Revalidation 2026-10-19T15:33:31Z#
- verdict:
refresh - note: 공개 노트가 자신을 ‘private capsule 초안’이라 소개해 공개 상태와 모순된다.