HTTPS 사이트가 어느 날 갑자기 "인증서가 만료되었습니다" 경고를 띄웁니다. 분명 ACM(AWS Certificate Manager)은 자동 갱신을 해준다고 했는데 왜 만료됐을까요. ACM은 무료로 TLS 인증서를 발급·관리하고 만료 전 자동 갱신까지 해주지만, 자동 갱신에는 조건이 있습니다. 그 조건이 깨지면 갱신이 조용히 실패하고, 만료 시점에야 문제가 드러납니다.
검증 방식이 갱신을 가른다
ACM 인증서는 도메인 소유권을 검증해야 발급·갱신됩니다. 검증 방식이 곧 자동 갱신 가능 여부를 결정합니다.
| 검증 방식 | 자동 갱신 | 주의점 |
|---|---|---|
| DNS 검증 | 가능(권장) | 검증용 CNAME 레코드를 지우면 갱신 실패 |
| 이메일 검증 | 사실상 수동 | 매번 승인 메일 클릭 필요, 운영 부적합 |
핵심은 DNS 검증을 쓰고 검증용 CNAME을 지우지 않는 것입니다. ACM은 갱신 시점에 그 CNAME으로 소유권을 다시 확인합니다. 레코드가 사라지면 갱신이 멈춥니다.
자동 갱신의 숨은 전제
DNS 검증을 썼더라도 인증서가 실제로 어딘가에 연결(in-use) 되어 있어야 ACM이 적극적으로 갱신합니다. ELB·CloudFront 등에 붙지 않은 인증서는 갱신 대상에서 빠질 수 있습니다. 또한 ACM 발급 인증서는 ACM과 통합된 서비스(ELB, CloudFront, API Gateway)에서만 쓸 수 있고, EC2에 직접 파일로 내려받아 설치할 수는 없습니다.
점검과 조치 순서
- 상태와 만료일 확인 — 어떤 인증서가 언제 만료되는지부터 봅니다.
aws acm list-certificates --certificate-statuses ISSUED
aws acm describe-certificate --certificate-arn <ARN> \
--query 'Certificate.[DomainName,NotAfter,RenewalEligibility,InUseBy]'
RenewalEligibility가 INELIGIBLE이면 자동 갱신 대상이 아니라는 뜻이라 1순위로 봅니다.
- DNS 검증 레코드 점검 — 발급 시 추가한 CNAME이 여전히 존재하는지 확인합니다. Route 53이라면 호스팅 영역에서
_xxxx.도메인형태의 CNAME을 찾습니다.
aws acm describe-certificate --certificate-arn <ARN> \
--query 'Certificate.DomainValidationOptions[].ResourceRecord'
-
연결 상태 확인 —
InUseBy가 비어 있으면 ELB·CloudFront에 연결되어 있는지 점검합니다. -
막혔으면 재발급 — 갱신이 끝내 안 되면 새 인증서를 발급해 리스너에 교체합니다. 새 ARN으로 바꾸면 다운타임 없이 전환됩니다.
요점 정리
- ACM 자동 갱신은 만능이 아니다. DNS 검증 + 검증 CNAME 유지 + 인증서 연결 세 조건이 필요하다.
- 이메일 검증은 운영에 부적합하니 DNS 검증을 쓴다.
RenewalEligibility와InUseBy를 먼저 확인하면 원인을 빠르게 좁힐 수 있다.- ACM 인증서는 ELB·CloudFront 등 통합 서비스용이며 EC2에 직접 설치할 수 없다.
ACM 인증서를 발급하고 DNS 검증·로드밸런서 연결을 직접 구성하는 실습은 클라우드 트랙에서 회원가입 없이 무료로 할 수 있습니다.