Views: 31
CAA Records: Restrict Which CAs Can Issue Your Certificates
Set a CAA DNS record to control which certificate authorities can issue for your domain, and avoid the parent-domain and caching traps that block legitimate renewals.
Check your domain for this issue now
Free, no sign-up. Runs the exact check this guide describes and shows what to fix.
Problem
You want to decide which certificate authorities may issue certificates for your domain — or a certificate request just failed with CAA record for <domain> prevents issuance and you need to find the record that did it. A CAA record is one DNS entry that answers a single question: who is allowed to issue for this name. Every publicly trusted CA has been required to honor it since 8 September 2017.
Symptoms
- An ACME client (Let’s Encrypt, ZeroSSL, and others) returns
urn:ietf:params:acme:error:caaor the textCAA record for <domain> prevents issuance. - A renewal that worked last quarter now fails, even though the DNS looks unchanged.
- A CA you just switched to cannot issue, while the previous one could.
- You have no CAA record at all, so any of the hundreds of trusted CAs may issue for your domain.
Top 3 Causes
- The record names a different CA than the one issuing.
issue "letsencrypt.org"authorizes Let’s Encrypt only; a request routed through DigiCert or Google Trust Services is refused. - A parent domain carries the blocking record. CAs climb the tree: they check the exact name, then drop the leftmost label and check again, up to the apex. A CAA on
example.comgovernsapp.example.comunless that subdomain has its own record — and the error message often names the subdomain, not the parent that actually blocked it. - An empty or wildcard-restricting value is doing exactly what it says.
issue ";"forbids all issuance;issuewild ";"blocks wildcards while leaving normal certs alone. Left over from an old lockdown, these quietly stop renewals.
Diagnose with DechoNet
- DNS Lookup to read the CAA records on the failing hostname and on every parent label up to the apex — the blocking record is frequently one level above where the error points.
- SSL Certificate Check to confirm which CA actually issues your live certificate, so the
issuevalue you set matches your real issuer instead of a guess.
Resolution Checklist
- Look up CAA on the failing hostname, then walk up each parent domain to the apex; the first label that has any CAA record wins, and labels above it are ignored.
- Confirm the issuer identifier your CA expects (Let’s Encrypt uses
letsencrypt.org, Google Trust Servicespki.goog, DigiCertdigicert.com, Sectigosectigo.com) and add anissueentry for it. - If you need wildcard certificates, add a matching
issuewildvalue — otherwise wildcard issuance silently followsissue. - Lower the TTL on the CAA record before you change it; after editing, allow the CA’s cache to expire (the record TTL or 8 hours, whichever is greater) before retrying.
- Add an
iodefentry (amailto:orhttps://URL) so the CA can report unauthorized issuance attempts back to you. - For high-value zones, pin issuance to one ACME account with the RFC 8657
accounturiandvalidationmethodsparameters — processing of these becomes mandatory for public CAs in 2027.
When to Escalate
- Escalate to your DNS provider if its panel cannot create a CAA record (type 257) or mangles the quoted value; a few legacy panels still handle it badly.
- Escalate to the CA’s support if issuance fails while your CAA records and account binding are demonstrably correct, since some validation methods and edge cases are CA-specific.
- Loop in whoever owns the parent zone when a CAA record above your delegation blocks a name you control but cannot edit yourself.
Related Tools
Related Guides
Share this guide
[Ad] Guide Detail Inline