Reference guide · dns-ssl · Published 2026-08-16 · 3 min read
CAA records setup
CAA records guide: what the issue and issuewild tags do, how issuers check them, and a safe step-by-step setup.
- ·What CAA does
- ·Record syntax
- ·Setup steps
What CAA does
A CAA (Certificate Authority Authorization) record is a DNS record that tells certificate authorities: only authorities listed here may issue certificates for this domain. The record is checked when someone requests a certificate, and again at renewal, against the DNS at the parent of the name being issued. If DNS has no CAA record, any CA may issue. Add one, and issuance is narrowed to the authority you named.
It is a leash, not a lock. A CA that issues despite your CAA has broken the spec, not your zone. The real value is control: no CA can surprise you with a cert for your domain, and a renewal failure after a config change is traced to a CAA edit you can see in the zone.
What the record looks like
CAA uses three tags, out of which two matter for normal use:
| Tag | Meaning | Typical value |
|---|---|---|
issue | apply to any normal certificate | 0 issue "letsencrypt.org" |
issuewild | apply to wildcard certificates only | 0 issuewild "letsencrypt.org" |
iodef | send incident reports to this address | 0 iodef "mailto:[email protected]" |
The flags field is a small integer, 0 for portable, non-critical tags. The quoted string is the CA issuer domain.
DNS-level credence: CAA is not a substitute for confirming who actually issued a certificate. The responsible check on your side is:
- Put a CAA record in place before any public certificate request, using the CA you intend to use.
- For Let's Encrypt (the free certificate guide uses it), two records:
example.com. 3600 IN CAA 0 issue "letsencrypt.org"
example.com. 3600 IN CAA 0 issuewild "letsencrypt.org"
- If you want a hard no-issue marker,
0 issue ";"says no authority may issue, and should be removed before you ever need a real cert. Be aware this blocks wildcard issuance too when noissuewildrecord exists.
How to add them
- Follow the same route as any TXT or A record in your DNS zone (registrar or DNS host panel). CAA is a genuine DNS record type, not a TXT with the string "CAA" in it; pick the record type
CAA. - Set owner
example.com(apex), TTL3600, flags0, tagissue, valueletsencrypt.orgquoted. - Add the
issuewildtwin if you ever expect a wildcard (*.example.com). - If you use a vendor CDN or security layer, use the CAA values the vendor publishes, usually on a support page listing the CA they bound to.
- Verify with a lookup tool after propagation, and again when a renewal silently fails:
dig CAA example.com(where supported).
Gotchas
- Child names: a CAA record applies to the name in the query and its subdomains unless a deeper record overrides it. Keep the apex record tight and you cover the site.
- Multiple CAs: list both
letsencrypt.organd your backup CA if you ever switch, or renewals (which are new issuance) will fail abruptly at edge time. - Wildcard precedence:
issuewildapplies only to wildcard requests and overridesissuewhen at least oneissuewildexists. With noissuewild, yourissuerecords already cover wildcards too. Addissuewildonly when you want different permissions for wildcard than non-wildcard issuance; otherwise a strayissuewild ";"blocks all wildcard issuance.
Renewal time is when CAA bites hardest: the renewal checklist flags the window, and the record types reference places CAA next to CNAME and TXT in the zone model.