Back to Guides
DNS-PERSIST-01ACMEComplianceNEW

DNS-PERSIST-01 Explained: Set It Once, Renew Forever

The new ACME validation method that eliminates DNS changes from your certificate lifecycle. Approved by CA/Browser Forum (SC-088v3), with Let's Encrypt support rolling out in 2026.

14 min readFebruary 2026FIRST-MOVER
DNS-PERSIST-01 persistent ACME DNS validation — set once, renew forever

Not sure which DCV method is right for your infrastructure? The PKI Priority Planner analyzes your environment and tells you what to focus on first.

Assess Your Priorities

Watch the Video

The Problem DNS-PERSIST-01 Solves

If you've automated certificate issuance with DNS-01 validation, you already know the pain points. Every renewal cycle requires your ACME client to create a new TXT record, wait for DNS propagation, and clean up afterwards. At scale, this creates real operational friction:

Credential distribution

DNS API credentials scattered across your issuance pipeline — every server that renews needs write access to your zone

Propagation delays

Every renewal waits for DNS propagation, adding minutes (or longer) to each issuance cycle

Concurrent validation issues

Multiple servers validating the same domain can overwrite each other's challenge tokens

Change management friction

In enterprise environments, DNS changes often require approval workflows — for every single renewal

DNS-PERSIST-01 takes a fundamentally different approach. Instead of repeating the challenge-response dance on every renewal, you publish a single, persistent authorization record. Set it once, and renewals just work — no DNS changes needed.

How DNS-PERSIST-01 Works

The key insight: instead of proving domain control on every issuance via a fresh challenge token, you publish a standing authorization that says "this CA, using this specific ACME account, is authorized to issue certificates for this domain."

The DNS Record

_validation-persist.example.com. IN TXT (
  "letsencrypt.org;"
  " accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234567890"
)

Breaking Down Each Component

_validation-persist

The DNS label — replaces _acme-challenge from DNS-01. This is a fixed prefix, not configurable.

letsencrypt.org

The CA's issuer-domain-name — identifies which Certificate Authority this record authorizes. Each CA has its own identifier.

accounturi=...

Binds the authorization to a specific ACME account — not just "anyone using this CA" but specifically YOUR account. This is mandatory.

DNS-01 Flow (Every Renewal)

  1. 1.Request certificate
  2. 2.Generate challenge token
  3. 3.Update DNS TXT record
  4. 4.Wait for propagation
  5. 5.CA validates
  6. 6.Certificate issued
  7. 7.Repeat everything on next renewal

DNS-PERSIST-01 Flow

  1. 1.Set TXT record once
  2. 2.Request certificate
  3. 3.CA validates (reads existing record)
  4. 4.Certificate issued
  5. Renew → Renew → Renew... no DNS changes needed

DNS-01 vs DNS-PERSIST-01 — Head-to-Head

FeatureDNS-01DNS-PERSIST-01
DNS changes per issuanceEvery timeOnce (setup only)
Challenge typeFresh token per requestPersistent standing authorization
DNS label_acme-challenge_validation-persist
Wildcard support✅ Yes✅ Yes (with policy=wildcard)
DNS API credentials at renewal✅ Yes — in the pipeline❌ No — only during setup
Propagation delays at renewal✅ Yes❌ No
Concurrent validation safe❌ No✅ Yes
CA bindingPer-challenge onlyPersistent, account-scoped
Security focusProtect DNS write accessProtect ACME account key
Revocation methodStop updating DNSRemove TXT record or deactivate ACME account
CA/B Forum section3.2.2.4.73.2.2.4.22
Validation data reusePer CA policyMax 10 days (per BRs), subject to TTL
Let's Encrypt statusProduction ✅Staging late Q1 2026, Production Q2 2026

Scope Controls — Wildcard, Subdomains, and Expiration

Basic FQDN Only (Default)

No policy parameter means authorization for the exact domain only.

_validation-persist.example.com. IN TXT (
  "letsencrypt.org;"
  " accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234567890"
)

Covers: example.com only.

Wildcard + Subdomains

Add policy=wildcard to extend scope to all subdomains:

_validation-persist.example.com. IN TXT (
  "letsencrypt.org;"
  " accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234567890;"
  " policy=wildcard"
)

Covers: example.com, *.example.com, www.example.com, app.example.com, server.dept.example.com — any subdomain.

Optional Expiration (persistUntil)

Add a UNIX timestamp to limit how long the authorization is valid:

_validation-persist.example.com. IN TXT (
  "letsencrypt.org;"
  " accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234567890;"
  " persistUntil=1767225600"
)

After the timestamp passes, the CA will not use this record for new validations.

Watch out for silent renewal failures

If you use persistUntil, you MUST monitor and update the record before it expires. Otherwise, your next renewal will fail silently. Consider whether the operational overhead of managing expiration defeats the purpose of "set it once."

Multiple CAs

Authorize more than one CA by adding multiple TXT records at the same label:

_validation-persist.example.com. IN TXT (
  "letsencrypt.org;"
  " accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/123;"
  " policy=wildcard"
)
_validation-persist.example.com. IN TXT (
  "ca2.example;"
  " accounturi=https://ca2.example/acme/acct/456;"
  " persistUntil=1767225600"
)

Each CA only evaluates the records matching its own issuer-domain-name.

Security Tradeoffs — What Changes

Critical framing: DNS-PERSIST-01 doesn't eliminate risk — it shifts where the risk lives. Your primary asset to protect changes from DNS write credentials to your ACME account private key.

The Security Shift

ScenarioDNS-01DNS-PERSIST-01
Primary asset to protectDNS write access (credentials in pipeline)ACME account private key
Attack windowBrief (during each validation)Persistent (as long as record exists)
If attacker compromises DNSCan get certs during validation windowCan add persistent authorization
If attacker compromises ACME keyLimited to one validation cycleCan use ALL existing persistent authorizations
Revocation speedRemove DNS tokenRemove TXT record AND/OR deactivate ACME account

Best Practices

Treat your ACME account key like a CA signing key

It now persistently authorizes certificate issuance for all domains with a _validation-persist record.

Use policy=wildcard sparingly

Only when you genuinely need subdomain coverage. Default FQDN-only scope limits blast radius.

Monitor your _validation-persist records

Unauthorized additions = unauthorized certificate issuance capability. Include these in your DNS monitoring.

DNSSEC recommended

Cryptographic authentication of DNS records adds integrity protection to your persistent authorizations.

Account key rotation doesn't break records

The accounturi is stable across key rotations (RFC 8555 §7.3.5) — you can rotate without updating DNS.

Know your revocation playbook

To emergency-revoke, deactivate the ACME account (RFC 8555 §7.5.2) — this is immediate and irrevocable.

Implementation Timeline

October 2025

CA/B Forum Ballot SC-088v3 passes unanimously

Complete
November 2025

IETF ACME WG adopts draft-ietf-acme-dns-persist-00

Complete
February 2026

Let's Encrypt announces DNS-PERSIST-01 support

Announced
Now

Pebble (test CA) support available

Available
Late Q1 2026

Let's Encrypt staging environment

Planned
Q2 2026

Let's Encrypt production rollout

Targeted
TBD

ACME client support (certbot, lego, acme.sh, etc.)

In Progress

Making a decision right now? The PKI Priority Planner scores your environment and recommends which validation method to adopt — including whether DNS-PERSIST-01 fits your setup.

Assess Your Priorities

When Should You Use DNS-PERSIST-01?

Use DNS-PERSIST-01 when:

  • Your servers aren't exposed to the public internet (private infrastructure, geo-locked access)
  • You have strict change management and DNS changes require approval workflows
  • You manage a large certificate estate and DNS propagation delays are a bottleneck
  • You want wildcard certificates without recurring DNS automation complexity
  • You're running IoT or edge deployments that can't coordinate DNS updates in real-time
  • You want to keep DNS API credentials OUT of your issuance pipeline

Stick with DNS-01 when:

  • You need fresh proof of control for every issuance (regulatory or internal policy requirement)
  • Your ACME account key management isn't mature enough for persistent authorization
  • You're waiting for your ACME client to add support (check certbot/lego/acme.sh status)

Consider HTTP-01 or TLS-ALPN-01 when:

  • Your servers ARE publicly accessible and you don't need wildcards

What's Next — Related Standards

References & Further Reading

Related FixMyCert Guides