isitdns? wiki/Records/CAA: certificate authority authorization
Records

CAA: certificate authority authorization

Who can mint TLS certificates for this name? CAA records restrict which CAs are authorized to issue for a domain. Every publicly trusted CA must check CAA before issuing (CA/Browser Forum Baseline Requirements §3.2.2.8); a CA not listed refuses the request.

Type number257
RFC8659 (obsoletes 6844)
RDATAflags · tag (issue / issuewild / iodef) · value

What it holds#

FieldPurpose
FlagsA bitfield; 128 (high bit) marks a tag critical: a CA that doesn't understand it must refuse to issue. 0 otherwise.
TagOne of issue, issuewild, or iodef.
ValueA quoted string: a CA's domain for issue/issuewild, or a mailto:/https: URL for iodef.
example.com.  CAA  0 issue       "letsencrypt.org"
example.com.  CAA  0 issuewild   "letsencrypt.org"
example.com.  CAA  0 iodef       "mailto:security@example.com"
  • issue "ca.example": that CA is authorized to issue any cert.
  • issuewild "ca.example": that CA is also authorized to issue wildcards. Without this tag, issue covers wildcards too (RFC 8659 §4.3).
  • issue ";": no CA is authorized to issue (RFC 8659's deny form).
  • iodef "mailto:...": where a CA should send misissuance reports. See "Gotchas."

When to use it#

At the apex, and at any name that needs a different issuance policy than its parent, for example blocking wildcard issuance in production while allowing it in staging.

When not to use it#

Rarely a reason to skip it. The only cost is locking out a CA you still use, by mistake.

dig example#

Asks which certificate authorities are authorized to issue for caa.example.isitdns.net.

 dig @1.1.1.1 caa.example.isitdns.net CAA
; <<>> DiG 9.20.11-0ubuntu0.2-Ubuntu <<>> @1.1.1.1 caa.example.isitdns.net CAA
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24538
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;caa.example.isitdns.net. IN CAA
;; ANSWER SECTION:
caa.example.isitdns.net. 300 IN CAA 0 issue "letsencrypt.org"
;; Query time: 51 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Mon Sep 14 13:45:34 CDT 2026
;; MSG SIZE rcvd: 86

GO NOERROR and an issue record naming one authority

NO GO NOERROR with no answer, which sends the CA up to the parent name to look there (RFC 8659 §3)

run this query in the dig tool →

what each part of this output means →

DNSSEC#

CAA at isitdns.net is signed: a validating resolver returns AD=1 once the CAA RRset checks out against the chain (dnssec). Since 2026-03-15 the Baseline Requirements also require CAs to DNSSEC-validate their own CAA lookups back to the root trust anchor, and to treat a validation failure as "do not issue," never as permission (§4.2.2.2.2, §4.2.2.2.5).

Gotchas#

  • A CNAME target's CAA applies, not the CNAMEd name's. RFC 8659 §3 leaves CNAME handling to the resolver's normal lookup, so a CAA query for a CNAMEd name returns the target zone's records. If the target has none, the search climbs the original name's own parents, not the target's: RFC 8659 dropped RFC 6844's CNAME tree-climbing.
  • issuewild overrides issue for wildcards once it exists. A lone issue record authorizes that CA for wildcards too (RFC 8659 §4.3). Add any issuewild record and every CA you want issuing wildcards must appear there explicitly.
  • iodef reports are best effort. The Baseline Requirements only say a CA SHOULD dispatch misissuance reports there, not that it must, and only mailto:/https: URLs are expected (BR §4.2.2.1). Skip iodef and misissuance attempts have no return address at all.
  • Managed DNS providers can auto-inject CAA records. Cloudflare, for example, adds records for its own certificate partners once a zone has any CAA record of its own. Partner sets can drift: isitdns.net still carries entries for a provider partner no longer on that list.
  • issue ";" locks out every CA, including renewals. Test it on a subdomain first.
  • CAs get 8 hours minimum to see a change, even at a 1h TTL. The Baseline Requirements let a CA that already fetched your record issue "within the TTL of the CAA record, or 8 hours, whichever is greater" (BR §4.2.2.1).

See also#