Split View: 47일짜리 TLS 인증서까지의 일정표 — SC-081v3 원문으로 확인한 단계별 날짜, Let's Encrypt의 45일 전환, ACME ARI
47일짜리 TLS 인증서까지의 일정표 — SC-081v3 원문으로 확인한 단계별 날짜, Let's Encrypt의 45일 전환, ACME ARI
- 들어가며 — 첫 번째 마감은 이미 지나갔다
- SC-081v3가 실제로 정한 일정 — 원문의 두 표
- 투표 결과가 말해주는 것 — 2019년과 2025년
- Let's Encrypt의 실제 전환 날짜 — 90 → 64 → 45
- 6일짜리 인증서와 IP 인증서 — 이미 일반 제공 중
- 갱신 시점을 하드코딩하지 마라 — ACME ARI(RFC 9773)
- 아직 안 온 것 — DNS-PERSIST-01의 현재 위치
- 그래서 무엇을 준비해야 하나
- 마치며
- 참고 자료
들어가며 — 첫 번째 마감은 이미 지나갔다
2026년 3월 15일, 공개 신뢰(publicly-trusted) TLS 인증서의 최대 수명이 398일에서 200일로 줄었습니다. 이 글을 쓰는 시점 기준으로 넉 달 전 일입니다. 연 1회 수동 갱신으로 버티던 팀이라면 올해 갱신 시점에 이미 체감했을 것이고, 아직 체감하지 못했다면 지금 쓰는 인증서가 만료되는 날 체감하게 됩니다.
이건 시작일 뿐입니다. 2025년 4월 CA/B Forum에서 통과된 투표 SC-081v3는 2029년 3월까지 최대 수명을 47일로 내리는 일정을 못 박았습니다. 그런데 이 주제는 요약 기사마다 날짜가 조금씩 다르게 돌아다닙니다. 그래서 이 글은 투표문과 TLS Baseline Requirements(BR) 원문에서 단계별 날짜를 직접 확인하는 데서 시작합니다. 그다음 Let's Encrypt가 공지한 실제 전환 날짜, 그리고 이 일정에서 살아남기 위한 도구들 — ACME 프로파일, 6일짜리 단기 인증서, ARI(RFC 9773), DNS-PERSIST-01 — 을 지금 시점의 실제 지원 현황과 함께 정리합니다.
참고로 인증서 쪽의 또 다른 큰 흐름인 포스트양자 전환은 PQ 인증서가 아직 안 오는 이유 편에서 따로 다뤘습니다. 두 흐름은 맞물립니다 — 수명이 짧을수록 알고리즘 교체가 빨라지니까요. 이 글은 수명과 자동화 쪽만 봅니다.
SC-081v3가 실제로 정한 일정 — 원문의 두 표
BR 6.3.2절의 최대 수명 일정입니다. 현행 BR(v2.2.8, 2026-06-16)에도 투표 당시 문안 그대로 실려 있는 걸 확인했습니다.
| 발급일 기준 | 이 날짜 전까지 | 최대 수명 |
|---|---|---|
| — | 2026-03-15 | 398일 |
| 2026-03-15부터 | 2027-03-15 | 200일 |
| 2027-03-15부터 | 2029-03-15 | 100일 |
| 2029-03-15부터 | — | 47일 |
각 단계에는 SHOULD NOT 한도가 하루씩 낮게 붙어 있습니다(397·199·99·46일). BR은 하루를 86,400초로 정의하고, 이를 1초라도 넘으면 하루를 더 센다고 명시합니다. 그래서 "최대치에 딱 맞춰 발급하지 말라(SHOULD NOT)"는 문장도 함께 들어 있습니다 — 뒤에 나올 Let's Encrypt의 45일이라는 숫자가 여기서 나옵니다.
그리고 같은 투표가 고친 4.2.1절의 도메인·IP 검증 데이터 재사용 일정입니다.
| 발급일 기준 | 이 날짜 전까지 | 검증 데이터 재사용 한도 |
|---|---|---|
| — | 2026-03-15 | 398일 |
| 2026-03-15부터 | 2027-03-15 | 200일 |
| 2027-03-15부터 | 2029-03-15 | 100일 |
| 2029-03-15부터 | — | 10일 |
마지막 줄을 다시 보세요. 수명은 47일로 "줄어드는" 것이지만, 도메인 검증(DCV) 재사용은 10일로 "무너집니다". 재사용 기간이 인증서 수명보다 짧아지는 최초의 구간입니다. 47일짜리 인증서를 갱신할 때마다 지난번 검증을 재사용할 수 없을 가능성이 높다는 뜻이고, 사실상 "갱신 = 매번 재검증"이 됩니다. 도메인·IP가 아닌 주체 신원 정보(OV의 조직 정보 같은 것)의 재사용도 825일에서 398일로 줄었습니다(2026-03-15부터).
이 일정이 노리는 게 뭔지는 투표문이 직접 말합니다 — 인증서는 발급 시점의 사실을 증명하는 스냅숏인데 시간이 지날수록 현실과 벌어진다는 것, 그리고 폐지(revocation) 인프라가 인터넷 규모에서 확장성·신뢰성·사용자 비용 면에서 제 역할을 못 하니 수명 자체를 짧게 해 보호를 "확실하게" 만들겠다는 것입니다. 흥미로운 대목 하나 — 자동화 확산은 투표문 스스로 "부수적 이득(ancillary benefit)"이라고 적었습니다. 자동화를 시키려고 수명을 줄이는 게 아니라, 수명을 줄이는 김에 자동화가 따라온다는 순서입니다.
투표 결과가 말해주는 것 — 2019년과 2025년
이런 시도가 처음이 아닙니다. 2019년의 SC22 투표는 최대 수명을 1년으로 줄이자는 안이었는데, CA 측 투표에서 찬성 11 대 반대 20(기권 2)으로 부결됐습니다. 찬성률 35%. 반면 브라우저 측(Apple, Cisco, Google, Microsoft, Mozilla, Opera, 360)은 7표 전원 찬성이었습니다. 결과적으로는 부결이 무색하게, BR 개정 이력 기준 2020-09-01부로 최대 398일이 발효됐습니다 — 루트 프로그램들이 포럼 표결 밖에서 방향을 정한 셈입니다.
2025년의 SC-081v3는 그림이 완전히 다릅니다. Apple의 Clint Wilson이 발의하고 Sectigo·Google Chrome·Mozilla가 배서했으며, 2025-04-11에 끝난 투표에서 CA 측 30표 중 찬성 25, 반대 0, 기권 5(Entrust, IdenTrust, Japan Registry Services, SECOM Trust Systems, TWCA)로 통과됐습니다. 브라우저 측은 4표 전원 찬성. 2019년에 반대표를 던졌던 GoDaddy·GlobalSign·D-TRUST·Izenpe·SwissSign이 이번엔 찬성으로 돌아섰고, 2019년의 반대파 중 SECOM과 TWCA는 기권으로 물러났습니다. 반대 0표라는 결과는 업계가 이 방향을 받아들였다는 뜻이기도 하지만, 루트 프로그램이 어차피 강제할 수 있다는 2020년의 학습효과가 반영된 결과로 읽는 게 정직할 겁니다.
Let's Encrypt의 실제 전환 날짜 — 90 → 64 → 45
BR 일정은 상한선이고, 실제 운영자가 체감하는 건 자기 CA의 일정입니다. Let's Encrypt는 2025년 12월 90일에서 45일로 줄이는 계획을 공지하면서 날짜를 못 박았습니다. 전환은 ACME 프로파일 단위로 굴러갑니다.
- 2026-05-13 —
tlsserver프로파일이 45일 인증서로 전환. 옵트인 프로파일이라 얼리어답터·테스트용입니다. 이건 이미 시행됐고, 현재 프로파일 문서에 45일로 반영돼 있습니다. - 2027-02-10 — 기본값인
classic프로파일이 64일 인증서 + 인증(authorization) 재사용 10일로 전환. 프로파일을 따로 고르지 않은 모든 사용자가 여기에 해당합니다. - 2028-02-16 —
classic이 45일 인증서 + 인증 재사용 7시간으로 전환.
각 변경은 프로덕션 약 한 달 전에 스테이징에 먼저 배포됩니다. 눈에 띄는 점 두 가지 — 45는 47보다 작습니다(앞서 본 86,400초 규칙과 "최대치로 발급하지 말라"는 BR 문장에 대한 여유), 그리고 2028-02-16이라는 날짜는 BR이 47일을 강제하는 2029-03-15보다 열세 달가량 빠릅니다. Let's Encrypt는 BR 마감보다 한 해 먼저 움직입니다.
현재 프로덕션 디렉터리가 광고하는 프로파일 세 개를 문서 기준으로 비교하면 이렇습니다(2026-07-14 갱신본 기준).
| 속성 | classic | tlsserver | shortlived |
|---|---|---|---|
| 인증서 수명 | 90일 | 45일 | 160시간(6일 남짓) |
| 인증 재사용 | 30일 | 7시간 | 7시간 |
| 도전과제 완료 시한 | 7일 | 1시간 | 1시간 |
| 주문 수명 | 7일 | 8시간 | 8시간 |
| CN / KE-KU / SKID | 포함 | 제거 | 제거 |
| 최대 이름 수 | 100 | 25 | 25 |
| 식별자 타입 | DNS | DNS | DNS, IP |
tlsserver의 인증 재사용 7시간에는 이유가 있습니다 — BR이 발급 8시간 전 이내의 CAA 재확인을 요구하므로, 재사용을 7시간으로 잡으면 재확인 자체를 안 해도 됩니다. 갱신량 걱정은 Let's Encrypt가 따로 답을 냈습니다 — 90일 인증서를 60일 차에 갱신하던 것이 45일 인증서를 30일 차에 갱신하는 것으로 바뀌면 갱신 요청은 두 배가 되지만, 갱신은 레이트 리밋에서 면제라 신규 도메인 발급 한도(계정당 하루 300건)에는 영향이 없습니다.
6일짜리 인증서와 IP 인증서 — 이미 일반 제공 중
일정의 끝(47일)보다 더 멀리 간 옵션도 이미 있습니다. Let's Encrypt의 shortlived 프로파일은 2026년 1월 15일부로 일반 제공입니다. 수명 160시간 — BR이 2026-03-15부터 "단기 인증서(Short-lived Subscriber Certificate)"로 인정하는 상한 7일(604,800초) 안에 들어갑니다. 단기 인증서로 분류되면 BR상 폐지 지원이 의무가 아니라 선택이 됩니다. 키가 유출돼도 6일이면 만료로 끝나니, 신뢰할 수 없는 폐지 인프라에 기대는 대신 수명으로 보호하는 겁니다. 다만 현재는 이 프로파일 인증서에도 CRL URL이 여전히 들어갑니다 — 빼는 논의는 boulder#7673에 열려 있습니다.
2025년 7월 첫 발급을 거쳐 함께 GA가 된 IP 주소 인증서는 반드시 shortlived여야 합니다 — IP는 도메인보다 소유가 더 자주 바뀐다는 이유로 Let's Encrypt가 정한 정책입니다. certbot 쪽 지원은 올해 3월에 정리됐습니다 — 프로파일 선택 플래그 --preferred-profile은 certbot 4.0부터, --ip-address 플래그는 5.3부터, webroot 모드의 IP 지원은 5.4부터입니다. 단 nginx·apache 설치 플러그인은 아직 IP 인증서를 지원하지 않아서 배포 훅으로 직접 연결해야 합니다.
Let's Encrypt 스스로 단기 프로파일에 대해 "이 프로파일은 모두를 위한 것이 아니다"라고 적고, 기본값으로 만들 계획이 없다고 못 박았다는 점은 그대로 옮겨둘 가치가 있습니다. 160시간짜리 인증서는 갱신 파이프라인이 나흘 정도만 죽어 있어도 만료로 이어집니다. 자동화를 완전히 신뢰하기 전에는 고르지 않는 게 맞습니다.
갱신 시점을 하드코딩하지 마라 — ACME ARI(RFC 9773)
"만료 30일 전 갱신" 같은 하드코딩은 90일 시대의 유물입니다. 수명이 90 → 64 → 45로 움직이는 동안 임계값을 계속 손보는 대신, CA가 갱신 시점을 알려주는 표준이 이미 있습니다 — 2025년 6월 발행된 RFC 9773, ACME Renewal Information(ARI)입니다. 2021년 9월 첫 드래프트부터 4년 만의 표준화이고, Let's Encrypt는 드래프트 시절인 2021년 말부터 서버(Boulder) 쪽을 지원해 왔습니다. 지금 프로덕션 디렉터리에 renewalInfo 엔드포인트가 실제로 떠 있는 것도 확인했습니다.
동작은 단순합니다. 클라이언트가 인증서의 AKI와 시리얼로 식별자를 만들어 물으면, 서버가 권장 갱신 창을 돌려줍니다.
GET {renewalInfo}/base64url(AKI keyIdentifier).base64url(Serial)
HTTP/1.1 200 OK
Retry-After: 21600
{
"suggestedWindow": {
"start": "2025-01-02T04:00:00Z",
"end": "2025-01-03T04:00:00Z"
},
"explanationURL": "https://acme.example.com/docs/ari"
}
클라이언트는 창 안에서 무작위 시점을 골라 갱신하고, Retry-After 간격으로 창이 바뀌었는지 다시 확인합니다. 갱신 주문에는 replaces 필드로 이전 인증서를 명시할 수 있는데, 이게 CA 정책에 따라 갱신 식별·레이트 리밋 처리에 쓰입니다. 만료된 인증서에 대해서는 더 묻지 않는 것(MUST NOT)까지 RFC가 정해 뒀습니다.
이 프로토콜의 진짜 가치는 평시가 아니라 사고 때 나옵니다. CA가 대량 폐지를 해야 하는 상황 — Let's Encrypt는 2022년 1월 TLS-ALPN-01 검증 오류로 약 200만 장을 폐지한 적이 있습니다 — 에서 CA는 갱신 창을 앞당겨 응답하고, ARI를 보는 클라이언트는 폐지가 집행되기 전에 교체를 끝냅니다. 24시간·5일짜리 폐지 시한 안에 사람이 개입하는 프로세스는 대부분의 사이트에 닿지 못합니다. Shopify의 사례가 교과서적입니다 — 수백만 도메인을 "만료 30일 전 + 0~72시간 지터"로 굴리다가, Ruby acme-client 젬에 ARI 지원을 직접 기여하고 갱신 타이밍 결정을 CA에 위임했습니다(효과 서술은 Shopify 자체 보고입니다 — 정량 수치는 공개돼 있지 않습니다).
클라이언트별 현황은 이렇습니다. 전부 원문 체인지로그·문서에서 확인한 것입니다.
- certbot — 4.1.0(2025-06-10)부터
certbot renew가 ARI를 자동 확인합니다. Let's Encrypt 기준으로 대략 수명의 3분의 2 지점 갱신이 되고, 5.0.0부터는 Retry-After를 실행 간에 보존합니다. - lego — CLI가 명시적으로 끄지 않는 한 ARI를 확인하며,
replaces필드까지 구현돼 있습니다. - Caddy/CertMagic — README가 RFC 9773 전체 지원을 명시합니다.
- cert-manager — 가장 최근에 합류했습니다. v1.21.0(2026-07-08)이
ACMEUseARI피처 게이트 뒤에 ARI 지원을 넣었습니다. 2023년 5월에 열린 요청 이슈가 3년 만에 움직인 것인데, 아직 기본 활성이 아닙니다. 쿠버네티스에서 인증서를 굴린다면 — cert-manager 실전 편에서 다룬 그 스택입니다 — 업그레이드와 게이트 활성화를 따로 챙겨야 한다는 뜻입니다.
ARI가 없는 클라이언트에 남는 차선책은 Let's Encrypt의 권고대로 "수명의 3분의 2 지점 갱신"을 지키는 것입니다. 45일 인증서면 30일 차입니다. 고정 60일 주기 같은 설정은 45일 시대에 그냥 장애입니다.
아직 안 온 것 — DNS-PERSIST-01의 현재 위치
수명 단축의 마지막 퍼즐은 검증 자동화입니다. 재사용 기간이 무너지면 검증을 자주 해야 하는데, 지금의 DNS-01은 갱신마다 새 토큰을 TXT 레코드로 써야 해서 DNS API 자격증명이 발급 파이프라인 곳곳에 흘러 다니게 됩니다. 그래서 나온 것이 DNS-PERSIST-01입니다 — 한 번 심어두면 갱신마다 바꿀 필요가 없는, CA와 ACME 계정을 지목하는 상시 인가 레코드입니다.
_validation-persist.example.com. IN TXT (
"letsencrypt.org;"
" accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234567890"
)
policy=wildcard를 붙이면 와일드카드·서브도메인까지 커버하고, 상시 인가가 불편하면 persistUntil로 만료를 걸 수 있습니다. 제도 쪽 정비는 끝났습니다 — CA/B Forum 투표 SC-088v3가 2025년 10월 만장일치로 통과돼 현행 BR 3.2.2.4.22("DNS TXT Record with Persistent Value")로 들어갔고, IP 주소용 _ip-validation-persist 변형도 함께 실렸습니다.
그런데 실물은 아직입니다. 2월 공지의 목표는 "스테이징 1분기 말, 프로덕션 2분기"였지만, 지금 시점의 실제 상태는 이렇습니다 — 스테이징에는 드래프트 구현이 올라가 있고(4월 말 draft-01 반영으로 accounturi가 챌린지 객체 필수 필드가 됐습니다), 프로덕션은 열리지 않았습니다. Let's Encrypt 엔지니어가 6월 25일 커뮤니티 포럼에 남긴 답이 현재 상태를 정확히 요약합니다 — 드래프트 이슈 #64(레코드에 클라이언트 계산 정보를 넣을지)가 풀리기 전에는 배포하지 않겠다는 것입니다. 5월에는 "IETF 합의가 늦으면 3분기로 밀릴 수 있다"는 답도 있었습니다. 공식 챌린지 타입 문서에도 아직 등재되지 않았습니다. 요컨대 지금 DNS-PERSIST-01을 전제로 아키텍처를 짜면 안 되고, 스테이징 실험까지만 가능합니다.
설계상의 트레이드오프도 공지문이 스스로 짚습니다 — DNS 쓰기 자격증명을 파이프라인에서 치우는 대신, 상시 인가가 ACME 계정에 묶이므로 계정 키가 새로운 최중요 비밀이 됩니다. 계정 키 보관과 회전 체계 없이 쓰면 위험을 옮긴 것에 불과합니다.
그래서 무엇을 준비해야 하나
일정표를 운영 언어로 번역하면 이렇습니다.
- 인벤토리부터. 수동 갱신되는 인증서 — 연 1회 달력 알림, 분기별 티켓, 장비 콘솔에 파일 업로드 — 를 찾아내는 게 첫 일입니다. 200일 시대에는 연 2회 수작업으로 버틸 수 있지만, 100일이면 연 4회, 47일이면 대략 매달입니다. 수작업의 문제는 횟수가 아니라, 횟수가 늘수록 한 번의 누락 확률이 곱해진다는 데 있습니다.
- 클라이언트 버전과 ARI. certbot 4.1 미만, ARI 없는 자체 스크립트, 고정 주기 cron이 있다면 지금 올리세요. 갱신 시점 판단을 CA에 위임하는 것이 이 일정 전체에 대한 가장 값싼 보험입니다.
- 모니터링은 갱신 성공이 아니라 만료 임박을 봐야 합니다. 갱신 파이프라인이 조용히 죽는 경우가 시끄럽게 실패하는 경우보다 위험하고, 수명이 짧아질수록 "조용히 죽은 채 버틸 수 있는 기간"도 짧아집니다. 45일 인증서에서 2주짜리 휴가 시즌 장애는 만료 사고입니다.
- 검증 경로의 자동화. 2027-02-10부터 Let's Encrypt 기본 프로파일의 인증 재사용이 10일로 줄고, 2028년에는 7시간이 됩니다. 갱신만 자동이고 검증(특히 DNS-01의 TXT 갱신)이 반자동인 구성은 여기서 깨집니다. DNS-PERSIST-01이 프로덕션에 오기 전까지는 DNS 자격증명 관리를 감수하든, HTTP-01/TLS-ALPN-01로 옮기든 결정이 필요합니다.
- 단기 프로파일은 마지막에. 폐지 걱정을 지우는 6일 인증서는 매력적이지만, 그 전에 45일에서 무사고로 몇 분기를 보내는 게 순서입니다.
반대로, 이 일정이 강제하지 않는 것도 분명히 해 두겠습니다. BR의 적용 범위는 "인터넷에서 접근 가능한 서버 인증용" 공개 신뢰 인증서입니다. 사설 CA로 굴리는 내부 PKI, 폐쇄망 장비, mTLS용 내부 인증서는 이 일정과 무관하게 수명을 스스로 정합니다. 공개 신뢰가 꼭 필요하지 않은 내부 시스템이 47일 주기를 감당할 수 없다면, 자동화 대신 사설 PKI로 옮기는 것도 정답의 하나입니다 — 이 판단 자체는 무중단 갱신 플레이북에서 다룬 운영 원칙의 연장선입니다.
마치며
정리합니다. 날짜는 확정입니다 — 200일(이미 시행), 2027-03-15부터 100일, 2029-03-15부터 47일, 그리고 같은 날 검증 재사용 10일. Let's Encrypt는 거기에 자기 일정을 얹었습니다 — 2027-02-10에 기본 64일, 2028-02-16에 기본 45일. 도구도 대부분 와 있습니다 — ARI는 RFC가 됐고 주요 클라이언트에 들어갔으며, 6일짜리 인증서는 GA입니다. 아직 안 온 것은 DNS-PERSIST-01의 프로덕션 배포 하나이고, 그마저 제도와 스테이징은 끝나 있습니다.
그러니 남은 변수는 표준도 CA도 아니고 각자의 운영입니다. 47일 시대의 실패 모드는 "갱신을 잊음"이 아니라 "자동화가 조용히 죽어 있었음"입니다. 지금 할 일은 달력에 갱신 알림을 더 촘촘히 박는 게 아니라, 알림 없이도 돌아가는 파이프라인과 그 파이프라인이 죽었을 때 울리는 경보를 만드는 것입니다.
참고 자료
- Ballot SC081v3: Introduce Schedule of Reducing Validity and Data Reuse Periods — CA/B Forum(투표 결과·투표문 전문)
- TLS Baseline Requirements 원문 — 6.3.2 수명 일정표, 4.2.1 재사용 일정표
- Ballot SC22: Reduce Certificate Lifetimes(v2) — 2019년 부결 기록
- Decreasing Certificate Lifetimes to 45 Days — Let's Encrypt(90→64→45 전환 날짜)
- Certificate Profiles — Let's Encrypt 문서(classic/tlsserver/shortlived 속성표)
- 6-day and IP Address Certificates are Generally Available — Let's Encrypt
- Shorter Certificate Lifetimes and Rate Limits — Let's Encrypt
- Six-Day and IP Address Certificates Available in Certbot — Let's Encrypt
- RFC 9773 — ACME Renewal Information(ARI) Extension
- ACME Renewal Information(ARI) Published as RFC 9773 — Let's Encrypt
- Simplifying Certificate Renewals for Millions of Domains with ARI — Shopify 사례
- DNS-PERSIST-01: A New Model for DNS-based Challenge Validation — Let's Encrypt
- dns-persist-01 배포 상태 스레드 — Let's Encrypt 커뮤니티(2026-06-25 스태프 답변)
- cert-manager v1.21.0 릴리스 노트 — ACMEUseARI 피처 게이트
- PQ 인증서가 아직 안 오는 이유 — ML-DSA 서명 크기와 Merkle Tree Certificates(관련 글)
The Road to 47-Day TLS Certificates — Step-by-Step Dates from the SC-081v3 Ballot Text, Let's Encrypt's 45-Day Transition, and ACME ARI
- Introduction — The First Deadline Has Already Passed
- What SC-081v3 Actually Set — Two Tables from the Source
- What the Vote Tallies Tell You — 2019 vs. 2025
- Let's Encrypt's Actual Transition Dates — 90 → 64 → 45
- 6-Day Certificates and IP Certificates — Already in General Availability
- Stop Hardcoding Renewal Timing — ACME ARI (RFC 9773)
- What Hasn't Arrived Yet — Where DNS-PERSIST-01 Stands
- So, What Should You Prepare?
- Closing
- References
Introduction — The First Deadline Has Already Passed
On March 15, 2026, the maximum lifetime of publicly-trusted TLS certificates dropped from 398 days to 200 days. As of this writing, that was four months ago. If your team has been getting by on once-a-year manual renewal, you've already felt it at this year's renewal cycle — and if you haven't yet, you will, the day your current certificate expires.
And this is only the start. The ballot SC-081v3, passed by the CA/B Forum in April 2025, locks in a schedule that brings the maximum lifetime down to 47 days by March 2029. Yet the dates on this topic tend to drift slightly from one summary article to the next. So this post starts by verifying the step-by-step dates directly from the ballot text and the TLS Baseline Requirements (BR) source. From there, it lays out Let's Encrypt's actual announced transition dates, and the tools that let you survive this schedule — ACME profiles, 6-day short-lived certificates, ARI (RFC 9773), and DNS-PERSIST-01 — together with their real support status as of today.
For context, the other major shift happening on the certificate side — the post-quantum transition — is covered separately in Why PQ Certificates Aren't Here Yet. The two trends are linked — the shorter the lifetime, the faster algorithm rotation becomes. This post sticks to lifetime and automation.
What SC-081v3 Actually Set — Two Tables from the Source
Here's the maximum-lifetime schedule from BR Section 6.3.2. I confirmed the current BR (v2.2.8, 2026-06-16) still carries the exact wording from when the ballot passed.
| Based on issuance date | Before this date | Maximum validity |
|---|---|---|
| — | 2026-03-15 | 398 days |
| From 2026-03-15 | 2027-03-15 | 200 days |
| From 2027-03-15 | 2029-03-15 | 100 days |
| From 2029-03-15 | — | 47 days |
Each stage carries a SHOULD NOT ceiling one day lower (397, 199, 99, 46 days). The BR defines a day as 86,400 seconds and specifies that exceeding it by even one second counts as an extra day — which is why the "SHOULD NOT issue right at the maximum" clause is written in alongside it. That's where Let's Encrypt's 45-day figure, covered later, comes from.
And here's the domain/IP validation data reuse schedule from the same ballot's revision to Section 4.2.1.
| Based on issuance date | Before this date | Validation data reuse limit |
|---|---|---|
| — | 2026-03-15 | 398 days |
| From 2026-03-15 | 2027-03-15 | 200 days |
| From 2027-03-15 | 2029-03-15 | 100 days |
| From 2029-03-15 | — | 10 days |
Look at the last row again. The lifetime is "shrinking" to 47 days, but domain validation (DCV) reuse "collapses" to 10 days. This is the first point where the reuse window becomes shorter than the certificate lifetime itself. It means that for a 47-day certificate, there's a good chance you won't be able to reuse the previous validation on renewal — renewal effectively becomes "re-validate every time." Reuse of subject identity information that isn't domain/IP (things like an OV certificate's organization data) also shrinks, from 825 days to 398 days, starting 2026-03-15.
The ballot text states its own goal directly — a certificate is a snapshot proving facts at the time of issuance, and the gap between that snapshot and reality only widens over time; and since revocation infrastructure hasn't scaled reliably or cost-effectively at internet scale, the plan is to make protection "certain" by shortening lifetime itself instead. One interesting detail — the ballot text itself describes wider automation adoption as an "ancillary benefit." The order isn't "shorten lifetimes to force automation" — it's "shorten lifetimes, and automation follows as a side effect."
What the Vote Tallies Tell You — 2019 vs. 2025
This isn't the first attempt. The 2019 SC22 ballot proposed cutting the maximum lifetime to one year, and it failed on the CA side, 11 in favor to 20 against (2 abstentions) — a 35% approval rate. The browser side (Apple, Cisco, Google, Microsoft, Mozilla, Opera, 360), by contrast, voted unanimously in favor, all 7. Despite that failure, the BR revision history shows a 398-day maximum took effect anyway as of 2020-09-01 — the root programs effectively set the direction outside the forum's own vote.
The picture for 2025's SC-081v3 is completely different. Proposed by Apple's Clint Wilson and endorsed by Sectigo, Google Chrome, and Mozilla, it passed in a vote that closed 2025-04-11 with the CA side going 25 in favor, 0 against, and 5 abstentions (Entrust, IdenTrust, Japan Registry Services, SECOM Trust Systems, TWCA) out of 30 votes. The browser side was unanimous, all 4. GoDaddy, GlobalSign, D-TRUST, Izenpe, and SwissSign — all of which voted against in 2019 — flipped to yes this time, and of the 2019 opponents, SECOM and TWCA stepped back to abstain. Zero votes against reads partly as the industry accepting the direction, but honestly it's probably also the 2020 lesson sinking in — that the root programs can force the issue regardless of how the forum votes.
Let's Encrypt's Actual Transition Dates — 90 → 64 → 45
The BR schedule is a ceiling; what operators actually feel is their own CA's schedule. In December 2025, Let's Encrypt announced its plan to go from 90 days to 45 days and pinned down dates. The transition rolls out per ACME profile.
- 2026-05-13 — the
tlsserverprofile moves to 45-day certificates. It's an opt-in profile, meant for early adopters and testing. This has already taken effect, and the current profile documentation already reflects 45 days. - 2027-02-10 — the default
classicprofile moves to 64-day certificates plus 10-day authorization reuse. This covers everyone who hasn't picked a different profile. - 2028-02-16 —
classicmoves to 45-day certificates plus 7-hour authorization reuse.
Each change ships to staging roughly a month ahead of production. Two things stand out — 45 is smaller than 47 (margin against the 86,400-second rule and the "don't issue right at the max" clause noted above), and 2028-02-16 lands about thirteen months ahead of 2029-03-15, the date the BR mandates 47 days. Let's Encrypt is moving a full year ahead of the BR deadline.
Here's how the three profiles the current production directory advertises compare, per the docs (as of the 2026-07-14 revision).
| Property | classic | tlsserver | shortlived |
|---|---|---|---|
| Certificate lifetime | 90 days | 45 days | 160 hours (just over 6 days) |
| Authorization reuse | 30 days | 7 hours | 7 hours |
| Challenge completion deadline | 7 days | 1 hour | 1 hour |
| Order lifetime | 7 days | 8 hours | 8 hours |
| CN / KE-KU / SKID | included | removed | removed |
| Max name count | 100 | 25 | 25 |
| Identifier types | DNS | DNS | DNS, IP |
There's a reason tlsserver's authorization reuse is set to 7 hours — the BR requires CAA re-checking within 8 hours before issuance, so setting reuse to 7 hours means you never need to re-check at all. As for worries about renewal volume, Let's Encrypt addressed that separately — going from renewing a 90-day certificate at day 60 to renewing a 45-day certificate at day 30 doubles renewal requests, but renewals are exempt from rate limits, so the daily new-domain issuance cap (300 per account per day) is unaffected.
6-Day Certificates and IP Certificates — Already in General Availability
There's already an option that goes further out than the end of the schedule (47 days). Let's Encrypt's shortlived profile has been generally available since January 15, 2026. At a 160-hour lifetime, it falls within the 7-day (604,800-second) ceiling the BR recognizes as a "Short-lived Subscriber Certificate" starting 2026-03-15. Classification as short-lived makes revocation support optional under the BR rather than mandatory. Even if a key leaks, expiration at 6 days closes the window, so instead of leaning on unreliable revocation infrastructure, protection comes from lifetime itself. That said, CRL URLs are currently still included on certificates from this profile — the discussion to drop them is open at boulder#7673.
IP address certificates, which reached GA alongside shortlived after their first issuance in July 2025, must use shortlived. That's a policy Let's Encrypt set because IP ownership changes hands more often than domain ownership. certbot's support for this landed this past March — the profile-selection flag --preferred-profile shipped in certbot 4.0, the --ip-address flag in 5.3, and webroot-mode IP support in 5.4. Note that the nginx and apache installer plugins still don't support IP certificates, so you have to wire them up directly via deploy hooks.
It's worth carrying over verbatim that Let's Encrypt itself says the short-lived profile "is not for everyone" and has explicitly stated it has no plans to make it the default. A 160-hour certificate means a renewal pipeline that's been down for roughly four days already leads to expiration. Don't pick it until you fully trust your automation.
Stop Hardcoding Renewal Timing — ACME ARI (RFC 9773)
Hardcoding something like "renew 30 days before expiry" is a relic of the 90-day era. Rather than keep tuning that threshold as lifetimes move 90 → 64 → 45, there's already a standard for the CA to tell you when to renew — RFC 9773, ACME Renewal Information (ARI), published in June 2025. It took four years to reach standardization from its first draft in September 2021, and Let's Encrypt's server side (Boulder) has supported it since late 2021, back when it was still a draft. I also confirmed that the renewalInfo endpoint is live on the current production directory right now.
The mechanism is simple. The client builds an identifier from the certificate's AKI and serial and asks for it; the server returns a recommended renewal window.
GET {renewalInfo}/base64url(AKI keyIdentifier).base64url(Serial)
HTTP/1.1 200 OK
Retry-After: 21600
{
"suggestedWindow": {
"start": "2025-01-02T04:00:00Z",
"end": "2025-01-03T04:00:00Z"
},
"explanationURL": "https://acme.example.com/docs/ari"
}
The client picks a random point inside the window and renews there, then checks again after the Retry-After interval to see if the window has shifted. A renewal order can name the certificate it's replacing via the replaces field, which a CA can use for renewal identification and rate-limit handling per its own policy. The RFC even specifies that a client MUST NOT keep asking about an expired certificate.
This protocol's real value shows up not in normal operation but during incidents. When a CA has to do a mass revocation — Let's Encrypt revoked roughly 2 million certificates in January 2022 after a TLS-ALPN-01 validation bug — the CA can respond with a pulled-forward renewal window, and clients watching ARI finish replacing their certificates before the revocation is enforced. A human-in-the-loop process doesn't reach most sites within a 24-hour or 5-day revocation deadline. Shopify's case is the textbook example — they were running millions of domains on "renew 30 days before expiry plus 0–72 hours of jitter," then contributed ARI support directly to the Ruby acme-client gem and handed renewal timing decisions off to the CA (the description of the effect is Shopify's own account — no quantified figures have been published).
Here's where client support stands, all confirmed from the original changelogs and docs.
- certbot — as of 4.1.0 (2025-06-10),
certbot renewchecks ARI automatically. With Let's Encrypt, that works out to renewal at roughly two-thirds of the lifetime, and as of 5.0.0, Retry-After is preserved across runs. - lego — the CLI checks ARI unless explicitly disabled, and even implements the
replacesfield. - Caddy/CertMagic — the README states full support for RFC 9773.
- cert-manager — the most recent to join. v1.21.0 (2026-07-08) added ARI support behind the
ACMEUseARIfeature gate. This is a request issue opened in May 2023 finally moving three years later, and it's still not on by default. If you're running certificates on Kubernetes — the same stack covered in the cert-manager deep dive — that means you have to handle the upgrade and enabling the gate separately.
For clients without ARI, the fallback Let's Encrypt recommends is sticking to "renew at two-thirds of lifetime." For a 45-day certificate, that's day 30. A fixed 60-day cycle configuration is simply an outage waiting to happen in the 45-day era.
What Hasn't Arrived Yet — Where DNS-PERSIST-01 Stands
The last piece of the lifetime-shortening puzzle is validation automation. As the reuse window collapses, validation has to happen more often — and today's DNS-01 requires writing a fresh token as a TXT record on every renewal, which means DNS API credentials keep flowing through various parts of the issuance pipeline. That's what DNS-PERSIST-01 is for — a standing authorization record naming the CA and the ACME account that, once planted, doesn't need to change on every renewal.
_validation-persist.example.com. IN TXT (
"letsencrypt.org;"
" accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234567890"
)
Adding policy=wildcard covers wildcards and subdomains too, and if a standing authorization feels uncomfortable, persistUntil can set an expiration. The standards side is done — CA/B Forum ballot SC-088v3 passed unanimously in October 2025 and is now in the current BR as Section 3.2.2.4.22 ("DNS TXT Record with Persistent Value"), which also carries the _ip-validation-persist variant for IP addresses.
But it doesn't exist in practice yet. The February announcement targeted "staging by end of Q1, production in Q2," but the actual state as of now is this — staging has a draft implementation (the late-April draft-01 update made accounturi a required field on the challenge object), and production hasn't opened. A Let's Encrypt engineer's reply on the community forum on June 25 sums up the current state accurately — they won't deploy until draft issue #64 (whether to include client-computed information in the record) is resolved. There was also a May reply noting that "if IETF consensus is delayed, this could slip to Q3." It hasn't been listed in the official challenge type documentation yet, either. In short, you shouldn't architect around DNS-PERSIST-01 right now — staging experiments are as far as it goes.
The announcement itself notes the design tradeoff honestly, too — moving DNS write credentials out of the pipeline comes at the cost of tying the standing authorization to the ACME account, which makes the account key the new most-critical secret. Using this without a proper account-key storage and rotation setup just moves the risk elsewhere.
So, What Should You Prepare?
Translating the schedule into operational terms looks like this.
- Start with inventory. The first job is finding certificates that get renewed manually — an annual calendar reminder, a quarterly ticket, a file uploaded through a device console. Manual work can get by on twice-a-year effort in the 200-day era, but that's four times a year at 100 days, and roughly monthly at 47 days. The problem with manual work isn't the count itself — it's that the probability of a single miss multiplies as the count grows.
- Client versions and ARI. If you're on certbot below 4.1, a homegrown script without ARI, or a fixed-interval cron job, upgrade now. Delegating the renewal-timing decision to the CA is the cheapest insurance available for this entire schedule.
- Monitoring should watch for looming expiry, not renewal success. A renewal pipeline that dies silently is more dangerous than one that fails loudly, and the shorter the lifetime, the shorter the window during which "silently dead" can go unnoticed. On a 45-day certificate, a two-week holiday-season outage is an expiration incident.
- Automate the validation path. Starting 2027-02-10, Let's Encrypt's default profile cuts authorization reuse to 10 days, and to 7 hours in 2028. A setup where renewal is automated but validation — especially DNS-01's TXT record updates — is semi-manual breaks right here. Until DNS-PERSIST-01 reaches production, you need to decide whether to live with managing DNS credentials or move to HTTP-01/TLS-ALPN-01.
- Save the short-lived profile for last. A 6-day certificate that erases revocation worries is tempting, but the right order is to first get through several incident-free quarters at 45 days.
And to be clear about the other side of this — what this schedule does not force. The BR's scope is publicly-trusted certificates used "for server authentication accessible on the internet." Internal PKI run on a private CA, closed-network equipment, and internal mTLS certificates set their own lifetimes independent of this schedule. If an internal system that doesn't strictly need public trust can't handle a 47-day cycle, moving to a private PKI instead of automating is also a valid answer — and that judgment call itself is an extension of the operating principles covered in the zero-downtime renewal playbook.
Closing
To sum up: the dates are locked in — 200 days (already in effect), 100 days from 2027-03-15, 47 days from 2029-03-15, and 10-day validation reuse on that same date. Let's Encrypt has layered its own schedule on top — 64 days by default at 2027-02-10, 45 days by default at 2028-02-16. Most of the tooling is already here too — ARI is a finished RFC and is in the major clients, and 6-day certificates are GA. The one thing still missing is DNS-PERSIST-01's production rollout, and even there the standards work and staging are done.
So the remaining variable isn't the standard or the CA — it's each team's own operations. The failure mode of the 47-day era isn't "forgot to renew," it's "automation died silently." What you need to build right now isn't a tighter calendar reminder — it's a pipeline that runs without needing reminders, and an alarm that fires when that pipeline dies.
References
- Ballot SC081v3: Introduce Schedule of Reducing Validity and Data Reuse Periods — CA/B Forum (vote result and full ballot text)
- TLS Baseline Requirements source — Section 6.3.2 lifetime schedule, Section 4.2.1 reuse schedule
- Ballot SC22: Reduce Certificate Lifetimes (v2) — the 2019 rejection record
- Decreasing Certificate Lifetimes to 45 Days — Let's Encrypt (90-to-64-to-45 transition dates)
- Certificate Profiles — Let's Encrypt docs (classic/tlsserver/shortlived property table)
- 6-day and IP Address Certificates are Generally Available — Let's Encrypt
- Shorter Certificate Lifetimes and Rate Limits — Let's Encrypt
- Six-Day and IP Address Certificates Available in Certbot — Let's Encrypt
- RFC 9773 — ACME Renewal Information (ARI) Extension
- ACME Renewal Information (ARI) Published as RFC 9773 — Let's Encrypt
- Simplifying Certificate Renewals for Millions of Domains with ARI — the Shopify case study
- DNS-PERSIST-01: A New Model for DNS-based Challenge Validation — Let's Encrypt
- dns-persist-01 deployment status thread — Let's Encrypt Community (2026-06-25 staff reply)
- cert-manager v1.21.0 release notes — the ACMEUseARI feature gate
- Why PQ Certificates Aren't Here Yet — ML-DSA signature size and Merkle Tree Certificates (related post)