Tools Learn Pricing Login Sign up
Home / Learn / ACME, ARI, and Surviving 47-Day Certs

ACME, ARI, and Surviving 47-Day Certificates

Public TLS certificates are capped at 200 days today, drop to 100 days on 15 March 2027, and to 47 days on 15 March 2029. The only sustainable answer is ACME-based automation: issue and renew via RFC 8555, take renewal timing from the CA using ACME Renewal Information (ARI, RFC 9773), and monitor independently of the renewal process itself. This guide covers all three.

At a glance
What it is
ACME automation issues and renews TLS certificates via RFC 8555, with renewal timing taken from the CA through ARI (RFC 9773).
Why it matters
Certificate validity collapses to 47 days by 2029, and DCV reuse to 10 days — so any workflow where a human touches DNS breaks.
Key fact
The number that bites isn't 47 days, it's 10-day DCV reuse — re-validating domain control roughly five times per cert lifetime.
Do this
Automate with an ARI-capable client (certbot 2.9+, acme.sh 3.0+), use DNS-01, and monitor renewals independently.
The schedule, precisely. Under CA/Browser Forum Ballot SC-081v3 (passed April 2025), maximum public TLS certificate validity is 200 days since 15 March 2026, 100 days from 15 March 2027, and 47 days from 15 March 2029. Domain-control-validation (DCV) reuse follows a steeper curve: 200 days, then 100 days, then just 10 days in March 2029 — so by 2029 you are re-validating domain control roughly five times per certificate lifetime. That, not the 47 days itself, is what breaks manual workflows.
Facts checked 15 July 2026. Certificate-lifecycle rules are changing on a published schedule; every date on this page is absolute so you can tell at a glance whether it has already passed.

The Shrinking Certificate Lifespan

Under CA/Browser Forum Ballot SC-081v3, the maximum public TLS certificate lifetime is collapsing on a fixed schedule. The first step is already behind us — 200 days has been the cap since 15 March 2026:

The number that actually bites: DCV reuse

Maximum validity gets the headlines, but the domain-control-validation reuse period is the one that changes your architecture. It is how long a CA may reuse a successful domain validation before making you prove control again:

In force fromMax validityMax DCV reuseWhat it means
15 Mar 2026 now 200 days 200 days Validation still outlives most certs. Manual DNS-01 survives.
15 Mar 2027 100 days 100 days Roughly Let's Encrypt's historical cadence, now industry-wide.
15 Mar 2029 47 days 10 days Re-validate ~5× per cert lifetime. Hand-placed DNS TXT records are dead.
If you take one thing from this page: in 2029 a hand-created _acme-challenge TXT record buys you 10 days, not a year. Any workflow where a human touches DNS to get a certificate must be replaced by an API-driven DNS-01 provider plugin before then. Start now — the 2027 step already halves your margin.

Why the Lifetime Cuts Happened

Three things drive shorter certificate lifetimes, and they're all rational:

Revocation doesn't work

Browsers stopped honouring OCSP and CRLs years ago because they break load-time UX. The only reliable revocation is "wait for the cert to expire" — so shorter certs shrink the revocation window.

Shorter compromise blast radius

A stolen private key in 2025 was useful for up to a year. In 2029 it's useful for 47 days.

Automation is now mature

ACME has been a proven, IETF-standardised protocol (RFC 8555) since 2019. The infrastructure exists to renew daily if needed.

ACME: The Protocol You're Already Using

ACME (Automated Certificate Management Environment, RFC 8555) is the protocol between your server and a CA. Let's Encrypt invented it; everyone now uses it. BuyPass, Google Trust Services, ZeroSSL, AWS Private CA, Cloudflare, Sectigo, and Microsoft Azure Key Vault all expose ACME endpoints.

The handshake, step by step

Modern clients do all of this in one shell command and a cron entry — but under the hood, every issuance and renewal runs the same loop:

1

Order

Your client creates an account key and asks the CA for an order covering one or more hostnames.

2

Challenge

The CA returns authorizations with challenges for each hostname you want to certify.

3

Validate

You prove control by serving an HTTP file (HTTP-01) or publishing a DNS record (DNS-01); the CA validates it.

4

Issue

You submit a CSR and the CA issues the certificate, signed by its intermediate.

5

Install

The client writes the cert and key, then runs a deploy/reload hook so the server serves it gracefully.

6

Auto-renew

A timer or daemon repeats the loop before expiry — following the ARI window when available.

Picking a client

Client Best For ARI Support
certbot Default Linux server, Apache/nginx plugins Yes (2.9+)
acme.sh Pure shell, lightweight, many DNS plugins Yes (3.0+)
lego Go binary, single static binary, scripting Yes
step-cli (Smallstep) Internal CAs, mTLS, short-lived certs Yes
Caddy / Traefik Reverse proxies with built-in ACME Yes
cert-manager Kubernetes Yes (1.13+)

HTTP-01 vs DNS-01: Pick One

Both challenges prove you control a hostname — they just put the proof in a different place:

HTTP-01

The CA gives you a token; you serve it at http://yourhost/.well-known/acme-challenge/<token>. Easiest possible setup.

  • Nothing to configure beyond a web root
  • No wildcards (*.example.com)
  • No hosts behind a private network
DNS-01

The CA gives you a token; you publish a TXT record under _acme-challenge.

  • Works for wildcards
  • Works for hosts that aren't publicly reachable
  • Needs API access to your DNS (Cloudflare, Route53, DigitalOcean, deSEC, etc.) and the matching client plugin
Use DNS-01 by default. It's harder to misconfigure permanently, survives infrastructure changes better, and is the only path to wildcards. Use HTTP-01 only when you genuinely have nowhere else to put the token.

ARI: The New Renewal Signal

ACME Renewal Information (ARI) lets the CA tell your client when to renew, instead of your client guessing. Standardised as RFC 9773 (Proposed Standard, June 2025), it is the most important addition to ACME since launch.

Before ARI, clients renewed on a fixed schedule — usually at two-thirds of the certificate lifetime. That was fine for predictable 90-day certs, but it breaks down for short-lived certs and especially for emergency mass-revocation events, where a CA needs thousands of subscribers to rotate early and has no way to say so.

What ARI does

The CA exposes a per-certificate endpoint that returns a JSON object containing a suggestedWindow — the earliest and latest times your client should renew. The client polls the endpoint, and renews when it falls inside the window.

GET /acme/renewal-info/<cert-id>

200 OK
{
  "suggestedWindow": {
    "start": "2026-06-01T00:00:00Z",
    "end":   "2026-06-08T00:00:00Z"
  },
  "explanationURL": "https://letsencrypt.org/docs/incident-..."
}

Why it matters

  • Mass-rotation events become safe. When a CA needs to revoke a batch of certificates (e.g. an incident, a key-ceremony rotation), it can advance the suggested window for affected certs. Your client renews automatically. The only reason you'd know an incident happened is the email.
  • Load is spread. The CA returns staggered windows, so renewals don't pile on identical schedules every 60 days.
  • It's free and lossless. Even if ARI is unavailable, the client falls back to its default schedule. There's no downside to enabling it.

Let's Encrypt has supported ARI in production since 2024. Google Trust Services, Sectigo, and Smallstep enabled it through 2025. Make sure your client is recent enough to use it — and note that ARI stops being a nice-to-have the moment your CA starts shortening lifetimes underneath you, which Let's Encrypt is now doing on a published schedule.

Let's Encrypt Is Moving Faster Than the CA/B Forum

If you use Let's Encrypt, the Baseline Requirements are not your binding constraint — Let's Encrypt's own roadmap is stricter and arrives sooner. Announced 2 December 2025:

DateProfileChange
15 Jan 2026 live shortlived 6-day certificates (160 hours) reach general availability, alongside IP-address certificates. Opt-in.
13 May 2026 live tlsserver Switches to 45-day certificates. Opt-in, for early adopters and testing.
10 Feb 2027 classic (default) 64-day certificates, 10-day authorisation reuse. This one hits everybody by default.
16 Feb 2028 classic (default) 45-day certificates, authorisation reuse collapses to 7 hours.
The 7-hour number is the real deadline. By February 2028 a Let's Encrypt authorisation is valid for seven hours. There is no version of that which a human can service. Any DNS-01 setup that isn't fully API-driven has about eighteen months to live.
Already happened — check if it broke you. On 13 May 2026 Let's Encrypt switched the default classic profile to its new Generation Y hierarchy (two new roots, six new intermediates, cross-signed from the Generation X roots so trust carries over). More disruptively, on 8 July 2026 the tlsclient profile was withdrawn and Let's Encrypt certificates no longer carry the TLS client-authentication EKU — driven by a Chrome root programme requirement, effective June 2026, that TLS client and server authentication live in separate PKIs. If you used a Let's Encrypt certificate to authenticate a client to a server (mTLS to an API, database, or broker), that stopped working. Move to a private CA — step-ca, Vault PKI, or your cloud provider's private CA — because no public CA is coming back to fill this gap.

MPIC: What Changed in Validation

Multi-Perspective Issuance Corroboration (MPIC) means the CA repeats your domain-control and CAA checks from several geographically separate network vantage points and refuses to issue unless enough of them agree. It exists to defeat BGP hijacks and localised DNS spoofing, which could previously fool a CA validating from one location.

It phased in under Ballot SC-067, and the phases matter because "MPIC is required" has meant different things at different times:

DateRequirement
15 Mar 2025 CAs must perform MPIC, but a failed corroboration does not have to block issuance.
15 Sep 2025 Enforcement begins. Issuance must be halted when the quorum is not met — at least 2 remote perspectives.
15 Mar 2026 now At least 3 remote network perspectives, with a defined quorum of corroborations.
15 Dec 2026 Ratchets up to at least 5 remote perspectives.

So as of today the binding rule is three remote perspectives with enforcement, moving to five in December 2026. The quorum table in Baseline Requirements §3.2.2.9 sets how many non-corroborations are tolerated for a given number of perspectives; in practice CAs run a primary plus five remotes and need a clear majority to agree.

For most users this is invisible. For two groups it matters:

  • Self-hosted DNS with regional anycast quirks — if your _acme-challenge propagation is uneven, MPIC will flag the mismatch and the order fails. Use a robust DNS provider and verify propagation before calling the CA.
  • Internal/split-horizon DNS — if your public DNS returns different records depending on source, expect validation to fail from at least one perspective. Don't split-horizon the _acme-challenge name.

A Real-World Setup (nginx + certbot + DNS-01)

# Install
sudo apt install certbot python3-certbot-dns-cloudflare

# Cloudflare API token in ~/.cloudflare.ini (chmod 600)
dns_cloudflare_api_token = <token-with-Zone:DNS:Edit>

# Issue
sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.cloudflare.ini \
  -d example.com -d '*.example.com' \
  --preferred-challenges dns-01 \
  --agree-tos --email security@example.com

# Auto-renew (certbot.timer is installed by default on most distros)
systemctl status certbot.timer

# certbot honours ARI automatically from 2.9+; renew is safe to run hourly
sudo certbot renew --deploy-hook "systemctl reload nginx"

That handles issuance and renewal. The hard part is catching the failures that don't page you — expired API tokens, rate-limits during bulk rotations, CAA drift, hijacked challenge paths, and renewals that succeed on disk but never reload the server. The "don't assume" column below covers each one.

Independent Monitoring: Why You Still Need It

Automation removes manual work. It doesn't remove failure modes — it just changes which ones occur. The cardinal sin of certificate operations is trusting the automation. Run independent monitoring, and don't assume a green renew job means a green served certificate:

Do monitor
  • Hit your host over TCP and read the actual served certificate.
  • Alert at 14, 7, 3, and 1 days before expiry.
  • Cover every public hostname — including the ones nobody documented.
  • Watch Certificate Transparency logs for unexpected issuance.
  • Test the full chain, not just the leaf.
Don't assume
  • That a renew job which succeeded actually reloaded the server — the reload hook is the most common silent failure.
  • That an expired or revoked DNS API token will page you — the job logs and exits quietly.
  • That a CAA record still lists your CA — audit changes to CAA.
  • That a new app on the same host didn't hijack /.well-known/acme-challenge/.
  • That your DNS provider won't rate-limit you during a bulk-rotation event — stagger renewals.
Check Your Certificate Lifecycle
Our free Cert Lifecycle tool reads the served certificate, projects renewal windows under the new SC-081 schedule, and flags expiry risk before it bites.
Open Cert Lifecycle Checker →

Quick Reference Checklist

  • Modern ACME client with ARI support (certbot 2.9+, acme.sh 3.0+, lego, cert-manager 1.13+)
  • DNS-01 challenge configured with API access to your DNS provider
  • Renewal job runs hourly (or via daemon mode)
  • Deploy/reload hook reloads the server gracefully on renewal
  • CAA record restricts issuance to your chosen CA(s)
  • Independent external monitoring of every public hostname
  • Renew job failures alert on the next failed run, not at expiry
  • CT log monitoring for unexpected issuance on your domain

Related Articles

Report a bug

We're new and growing — your feedback helps us improve.

Click to upload, or paste (Ctrl+V) an image