Technical Guide5 min read

DNS CAA Records (RFC 6844, RFC 8659): Mitigating Rogue SSL/TLS Certificates and PKI Risks

The global Public Key Infrastructure (PKI) web of trust relies on hundreds of publicly trusted Certificate Authorities (CAs) embedded into operating system and browser root stores. Under standard Web PKI rules, ANY recognized CA can legally issue a valid, browser-trusted TLS certificate for virtually ANY domain on Earth—unless domain owners explicitly restrict issuance authority. In the absence of restrictions, compromised or rogue intermediate CAs have historically minted fraudulent certificates for high-profile domains, enabling invisible man-in-the-middle (MITM) surveillance. DNS Certification Authority Authorization (CAA, RFC 6844, updated by RFC 8659) closes this critical vulnerability. This guide explains CAA record syntax, tree-climbing evaluation mechanics, incident alerting, and DNSSEC dependencies.

Interactive Tool AvailableTest these concepts directly in your browser without transmitting data to any server.
Launch Tool →

1. The PKI Vulnerability Landscape and the Role of CAA

Historically, if an attacker compromised a regional Certificate Authority or tricked a registration authority via fraudulent DNS-01/HTTP-01 domain validation challenges, they could issue unauthorized certificates for domains like `google.com`, `github.com`, or sensitive banking portals.

While Certificate Transparency (CT) logs make post-issuance detection possible after the fact, CT logs cannot prevent the fraudulent certificate from being created in real time.

Since September 8, 2017, the CA/Browser Forum (CAB Forum) Baseline Requirements mandate that all publicly trusted Certificate Authorities MUST check DNS CAA records prior to issuing any certificate. If a domain publishes CAA records, a CA that is not explicitly named in the authorized issuer list MUST refuse to issue the certificate under penalty of revocation and ejection from browser root programs.

2. The Anatomy of RFC 8659 CAA Records: Tags and Flags

A DNS CAA record is a dedicated resource record type (RR type 257) composed of three fields: `flag`, `tag`, and `value`.

The `flag` byte is an unsigned 8-bit integer. The most significant bit (bit 0, value 128) is the Issuer Critical Flag. If set to `128` (or `1` in some zone configurations), any CA that encounters an unrecognized tag in the record MUST abort certificate issuance. If set to `0`, unknown tags may be safely ignored.

RFC 8659 defines three standardized tags: `issue` authorizes an explicit CA to issue single-domain, multi-domain (SAN), or wildcard certificates; `issuewild` explicitly restricts or grants authority for wildcard certificates (`*.domain.com`); and `iodef` (Incident Object Description Exchange Format) specifies an email or URL endpoint where CAs must report policy violations and unauthorized issuance attempts.

A fourth modern tag, `contactemail` / `contactphone`, allows domain administrators to declare authorized contact coordinates for automated validation.

// Standard BIND / RFC 8659 Zone Record Syntax:
example.com. IN CAA 0 issue "letsencrypt.org"
example.com. IN CAA 0 issue "digicert.com"
example.com. IN CAA 0 issuewild ";"
example.com. IN CAA 0 iodef "mailto:security@example.com"

// Interpretation:
// 1. Let's Encrypt and DigiCert may issue standard host certificates.
// 2. The issuewild ";" tag forbids ANY CA from issuing wildcard certificates!
// 3. Unauthorized issuance attempts trigger immediate incident reports.

3. DNS Tree-Climbing Algorithm and Wildcard Invariants

When a CA processes an issuance request for a Fully Qualified Domain Name (FQDN) such as `auth.api.us.example.com`, RFC 8659 dictates a mandatory recursive search known as the Tree-Climbing Algorithm.

The CA queries for CAA records at `auth.api.us.example.com`. If no CAA record exists, it climbs up the DNS hierarchy to `api.us.example.com`, then `us.example.com`, and finally `example.com`. The first domain level that contains a CAA record becomes the binding authority; once found, tree-climbing halts immediately. If no CAA records are discovered up to the public suffix boundary, the CA is permitted to issue the certificate.

Crucially, if a wildcard certificate (`*.api.example.com`) is requested, the CA specifically checks for the `issuewild` tag. If `issuewild` is present, it completely supersedes the general `issue` tag. If a domain publishes `issuewild ";"`, wildcard issuance is unconditionally prohibited, protecting organizations whose security policies forbid shared wildcard private keys across heterogeneous microservices.

4. The Mandatory Dependency on DNSSEC Trust Anchors

A critical security caveat in the CAA architecture is transport-level tampering. If DNS queries are transmitted in unauthenticated plaintext over UDP port 53, an active network attacker could forge a DNS response (spoofing `NXDOMAIN` or stripping the CAA record), tricking the CA into believing that no CAA restrictions exist.

To make CAA legally binding and tamper-proof, domains must deploy DNSSEC (Domain Name System Security Extensions). Under DNSSEC, CAA records are signed with cryptographic RRSIG keys anchored back to the DNS root.

When a CA queries CAA records for a DNSSEC-enabled domain, it verifies cryptographic signatures. If an attacker attempts to strip or manipulate the record, DNSSEC validation returns `SERVFAIL`, and compliant CAs must immediately halt issuance.

5. Automated Synthesis and Client-Side Generation

Misconfiguring CAA syntax—such as omitting quotes around values, forgetting the semicolon in wildcard denials, or using incorrect flag bytes—causes unexpected certificate renewal failures across automated Let's Encrypt / Certbot cron jobs, taking down production HTTPS services.

Browser-based CAA generator tools allow site reliability engineers to visually toggle authorized CAs (Let's Encrypt, DigiCert, Sectigo, Google Trust Services, Cloudflare), configure incident endpoints, and output formatted BIND zone records and Cloudflare/Route53 API payloads.

Generating CAA configurations locally inside the browser guarantees that proprietary internal DNS hostnames and infrastructure security contacts are never sent to external logging servers.

Summary & Best Practices

DNS CAA records (RFC 8659) protect domain owners by restricting TLS certificate issuance to authorized CAs, preventing wildcard abuses via `issuewild`, and delivering real-time incident reports via `iodef`. Enforcing CAA backed by DNSSEC establishes an impenetrable defense against rogue intermediate CAs in the modern Web PKI ecosystem.

← Back to All GuidesTry the dns-caa-generator tool →