CAA Record
A DNS Certification Authority Authorization (CAA) record is a type of DNS resource record that allows domain owners to explicitly declare which Certificate Authorities (CAs) are authorized to issue SSL/TLS certificates for their domain or specific hostnames. It acts as a security policy mechanism that provides an additional layer of protection against unauthorized certificate issuance.
How it works
By default, every public Certificate Authority is allowed to issue certificates for any domain name in the public DNS, provided they validate control of that domain name. CAA records change this by allowing domain owners to create a whitelist of authorized CAs, preventing mis-issuance of certificates which could otherwise be exploited for malicious activities like phishing or man-in-the-middle attacks.
Key Points
- CAA records prevent unauthorized CAs from issuing certificates for your domain
- Certificate Authorities are required by industry standards to check CAA records before issuing certificates
- CAA records are checked hierarchically - if not found on a subdomain, the parent domain is checked
- The record format is:
flags tag "value"(e.g.,0 issue "letsencrypt.org") - CAA was standardized in 2019 by RFC 8659 and RFC 8657, making it a relatively modern security mechanism
Common Use Cases
- Certificate Authority Whitelisting: Explicitly authorize only specific CAs (like Let's Encrypt or DigiCert) to issue certificates for your domain, blocking all others
- Wildcard Certificate Control: Use the
issuewildtag to specify different authorization rules for wildcard certificates versus regular certificates - Security Incident Reporting: Use the
iodeftag to specify a URL where CAs can report security policy violations concerning unauthorized certificate requests - Subdomain-Specific Authorization: Set different CAA policies for different subdomains, allowing tighter control over certificate issuance across your infrastructure
code Example Configuration
| Type | Host / Name | Value / Points to | TTL |
|---|---|---|---|
| CAA | @ | 0 issue "letsencrypt.org" | 3600 |
| CAA | @ | 0 issuewild "digicert.com" | 3600 |
| CAA | @ | 0 iodef "mailto:security@example.com" | 3600 |
| CAA | no-ssl | 0 issue ";" | 3600 |
* CAA records specify which Certificate Authorities can issue certificates. The flag is typically 0, and common tags are 'issue', 'issuewild', and 'iodef'.
Frequently Asked Questions
Are Certificate Authorities required to check CAA records?expand_more
What happens if I don't have a CAA record?expand_more
How do I allow multiple Certificate Authorities?expand_more
What does the flag value in a CAA record mean?expand_more
Can I prevent all certificate issuance for a domain?expand_more
0 issue ";" which tells all CAs that no one is authorized to issue certificates for that domain. This is useful for subdomains or internal domains where you never want SSL/TLS certificates to be issued.