What are CAA records, and how do they limit who can issue your TLS certificates?
A Certification Authority Authorization (CAA) record is a DNS TXT-like record that names which certificate authorities are allowed to issue TLS certificates for your domain; every publicly trusted CA is required to check for one before issuing, so an empty or misconfigured CAA record either does nothing or can accidentally block renewals from your own CA.
By AdminKit team, Netbase JSC · Updated October 24, 2026
Why CAA records exist
Before CAA records, any publicly trusted certificate authority could issue a TLS certificate for any domain, as long as the requester passed that CA’s own domain-validation check — usually proving control of a DNS record, an email address at the domain, or a file on the web server. That design means a domain owner has no direct say in which CAs are allowed to issue for their name; the only constraint is each CA’s own validation process, and different CAs have historically had different levels of rigor and different track records of mistakes or compromises. RFC 8659 closes that gap by letting a domain publish, in its own DNS, an explicit allow-list of CAs. The CA/Browser Forum’s Baseline Requirements — the rules publicly trusted CAs must follow to stay trusted by browsers — make checking CAA records mandatory before issuance, not optional best practice. That mandate is what gives CAA its teeth: it isn’t a suggestion a CA can ignore, it’s a condition of being in the trusted root program at all.
What a CAA record actually looks like
A CAA record has three parts: a flag, a tag, and a value. The two tags that matter for most domains are issue (which CA may issue standard certificates) and issuewild (which CA may issue wildcard certificates, checked separately so a domain can allow wildcards from a different, or no, CA). A typical record authorizing Let’s Encrypt looks like:
example.com. CAA 0 issue "letsencrypt.org"
A domain can publish multiple issue records to permit more than one CA, or publish 0 issue ";" to explicitly permit no CA to issue at all — a deliberate “this domain should never get a new publicly trusted certificate” statement, sometimes used on domains that are parked or intentionally never served over public TLS. There’s also an iodef tag that names a URL or email address a CA should notify if it receives (and refuses) an unauthorized issuance request — a built-in early-warning signal most domains never configure, even though it costs nothing to set up.
What CAA does and doesn’t protect against
CAA closes one specific gap: it stops a different, unauthorized CA from issuing a valid certificate for your domain, whether because an attacker tricked that CA’s domain-validation process, exploited a bug in it, or because that CA’s own infrastructure was compromised. It’s a narrow but real risk — publicly documented CA mis-issuance incidents are the reason this record type exists at all, including cases where an attacker used BGP hijacking to reroute traffic and pass a CA’s domain-validation check well enough to obtain a fraudulent certificate.
What it does not do: protect against your own authorized CA being compromised, protect against someone who already controls your DNS (they can simply rewrite or delete the CAA record before requesting a certificate, as covered in our DNS hijacking guide), or validate anything about the certificate after it’s issued. CAA is purely a pre-issuance gate checked by CAs, not a runtime check performed by browsers or clients connecting to your server. If you want to verify what a currently-issued certificate for your domain actually contains — issuer, expiry, chain validity — that’s a separate check, covered in our guide on reading a TLS/SSL certificate check result.
How to check and set up CAA records
- Check what’s currently published. Use AdminKit’s DNS lookup tool to query your domain’s CAA records. Many domains have none at all, which is valid (any CA may issue) but means you’re not using this protection.
- Confirm it matches every CA you actually use. If you use more than one CA — for example a paid EV certificate from one provider and Let’s Encrypt for internal services — list both. Missing one is the single most common cause of a failed renewal.
- Don’t forget
issuewildif you use wildcard certificates. A CAA record with onlyissueset does not implicitly authorize wildcard issuance for a CA that checks theissuewildtag separately. - Set a realistic TTL. Like any DNS record, a CAA change takes effect only after cached copies expire; see our guide on DNS propagation and TTL if you’re planning a CA migration and need the old record gone before the new CA’s next issuance attempt.
- Consider
iodefif your DNS provider supports it, so you get notified of any issuance attempt your CAA record blocks — a free tripwire for exactly the attack CAA exists to stop.
Related checks
CAA controls who is allowed to issue a certificate; it says nothing about whether a specific certificate your server presents today is valid, expiring soon, or chained correctly. Run AdminKit’s SSL/TLS certificate check to verify the live certificate itself, and see reading a TLS/SSL certificate check result for how to interpret it. If a CA does mis-issue despite CAA, Certificate Transparency logs are how that becomes visible after the fact, and HSTS preload separately protects a first-ever connection from being downgraded to plain HTTP in the first place.
This guide is general information, not a security audit of your specific network — see our disclaimer for what AdminKit's guidance does and does not commit to.
Frequently asked questions
What is a CAA record in plain terms?
It's a DNS record type, defined by RFC 8659, that lists which certificate authorities (CAs) — like Let's Encrypt, DigiCert, or Sectigo — are permitted to issue a TLS certificate for your domain. A CA that isn't listed is required to refuse the request, not just warn about it.
Do I need a CAA record if I only use one certificate authority?
You don't strictly need one, but it's a cheap defensive layer: without a CAA record, any publicly trusted CA can issue a certificate for your domain if someone manages to pass that CA's domain-validation check (often just proving control of a DNS record or a file on your web server). A CAA record narrows that to only the CA you actually use, so a validation bypass or social-engineering attempt against a different CA is refused outright.
Can a CAA record stop someone who has already compromised my DNS?
No. CAA is checked by the certificate authority at issuance time using the same DNS your domain already publishes, so an attacker who controls your DNS can simply add their own CAA entry — or remove yours — before requesting a certificate. CAA protects against a CA being tricked or compromised independently of you, not against your own DNS being hijacked; see our guide on DNS hijacking for that separate risk.
What happens if I set a CAA record wrong and lock out my own CA?
Your next certificate renewal will fail. This is the most common real-world CAA mistake: a domain sets a CAA record naming one CA, then switches providers (e.g., from a paid CA to Let's Encrypt, or vice versa) without updating the record. The new CA's issuance request gets refused by its own CAA check, and the failure usually surfaces as a cryptic renewal error rather than an obvious DNS problem.
Does a CAA record affect which browsers trust my certificate?
No — CAA only constrains issuance, checked once by the CA before it signs a certificate. It has no effect on how browsers validate a certificate afterward; that's governed entirely by the certificate chain, expiry, and hostname match, which you can inspect with AdminKit's SSL/TLS check tool.
Want AdminKit to watch this for you?
Free checks tell you the state today. Protective DNS and monitoring tell you when it changes.