What Is DNSSEC? — Sign and Verify DNS Answers
The Problem: DNS Trusts Blindly
The Domain Name System (DNS) is the phone book of the internet. It translates yourdomain.com into an IP address, a mail server hostname, or a TXT record. But the original DNS protocol from the 1980s was designed without security — DNS responses are unsigned. Whoever sends an answer is trusted by default.
That opens two classic attacks:
- Cache poisoning — An attacker manipulates a resolver’s DNS cache (your ISP, a mail server) and injects forged responses. The famous Kaminsky attack of 2008 demonstrated this at scale.
- DNS spoofing — An attacker on the network path intercepts DNS queries and responds faster than the legitimate resolver, returning a manipulated IP address.
The consequence: your mail server delivers to the wrong MX, your browser lands on a phishing page, your TLS certificate check shows the wrong thing. Every DNS-based security mechanism becomes worthless if DNS itself is manipulated.
DNSSEC fixes this.
What Is DNSSEC?
DNSSEC (Domain Name System Security Extensions, defined in RFC 4033-4035) extends DNS with digital signatures. Every DNS record is signed by the domain owner, and a validating resolver can verify the signature against a chain of trust that reaches all the way to the DNS root.
Simplified: DNSSEC is to DNS what HTTPS is to HTTP — authenticity and integrity, but not encryption. DNSSEC does not hide what you query (that’s what DNS-over-HTTPS or DNS-over-TLS is for), but guarantees the answer is genuine and unmodified.
How It Works
DNSSEC adds four new record types that together form a cryptographic chain of trust.
The Four Record Types
| Record | Purpose |
|---|---|
| DNSKEY | The public key of your zone. Multiple can coexist (e.g. KSK = Key Signing Key, ZSK = Zone Signing Key). |
| RRSIG | The signature over a record set. Every DNS record comes with an RRSIG attached. |
| DS | A hash of your DNSKEY, published in the parent zone (typically at the registrar/TLD). This anchors your zone in the chain of trust. |
| NSEC / NSEC3 | Authenticated Denial of Existence — proves a name does not exist, instead of just returning nothing. |
The Chain of Trust
When a validating resolver looks up mail.yourdomain.com, this happens:
- Root zone (
.) signs the DNSKEY of the TLD.com— secured by the DNS Trust Anchor (root KSK, hardcoded in every validating resolver) - TLD zone (
.com) signs the DS of your domainyourdomain.com - Your zone (
yourdomain.com) signs all your records — A, MX, TXT, TLSA, etc. — with its ZSK
If any link in this chain breaks, validation fails and the resolver returns SERVFAIL. That’s intentional — better no answer than a possibly tampered one.
The AD Bit
When a validating resolver has successfully validated a response, it sets the AD bit (Authenticated Data) in the DNS reply. DNSSEC-aware applications — for example a DANE-capable mail server — check this bit before trusting the answer.
Activate DNSSEC at Your Provider
DNSSEC is a two-step process: sign (at your DNS host) and anchor (at your registrar).
Step 1: Enable at Your DNS Host
Most modern DNS providers support DNSSEC for free:
| Provider | Path |
|---|---|
| Cloudflare | DNS → Settings → DNSSEC → Enable |
| AWS Route 53 | Hosted Zone → DNSSEC signing → Enable |
| Google Cloud DNS | Zone → DNSSEC → On |
| Hetzner DNS Console | Zone → Enable DNSSEC |
| deSEC.io | active by default |
The host generates the key pair and starts signing your zone. You then see a DS record — a line with Key Tag, Algorithm, Digest Type, and Digest.
Step 2: Publish the DS Record at Your Registrar
The DS record must be entered at the registrar where your domain is registered (not necessarily the DNS host). The registrar passes it to the TLD registry, which publishes it in the parent zone — anchoring your zone in the chain of trust.
| Registrar | Path |
|---|---|
| Cloudflare Registrar | automatic (one-click if DNS is also at Cloudflare) |
| GoDaddy | DNS → DNSSEC |
| Namecheap | Domain Settings → Advanced DNS → DNSSEC |
| Google Domains / Squarespace | Security → DNSSEC |
| INWX | Domain → DNSSEC |
Important: order matters — sign first, publish DS second. If the DS is in the parent zone before your zone is signed, the domain becomes bogus and unreachable for validating resolvers (SERVFAIL).
A DACH Caveat: united-domains and Strato
Some German registrars only accept DS records when their own nameservers are used. Examples: united-domains, Strato, 1blu. If your DNS is hosted at Cloudflare, AWS, or any other third-party provider, you have no DNSSEC option there — a business decision, not a technical limitation.
The way out: transfer the domain to a registrar that accepts DS with external nameservers (INWX, Hetzner, Cloudflare Registrar). The domain stays reachable; only the registry assignment changes.
Verification
After setup you want to know if DNSSEC actually applies. Three reliable ways:
# Query Cloudflare DoH, check the AD bit
curl -s "https://cloudflare-dns.com/dns-query?name=yourdomain.com&type=SOA&do=1" \
-H "Accept: application/dns-json" | jq '.AD'
# Output: true → DNSSEC active and valid
- dnsviz.net — visual chain-of-trust analysis showing where the chain breaks if it does
- DMARCPulse — we check DNSSEC for every monitored domain via DoH against Cloudflare 1.1.1.1 and alert on bogus state
Propagation can take 24-48 hours until the TLD has published the DS in the parent zone.
Common Pitfalls
- DS before signing — if you enter the DS at the registrar before your zone is fully signed, the domain becomes bogus. Remove the DS immediately until signing is complete.
- Algorithm mismatch — modern DNS hosts use ECDSAP256SHA256 (Algorithm 13). Some older registrar frontends only offer RSA/SHA-256 (Algorithm 8). Make sure both sides use the same.
- Forgot key rotation — some DNS hosts rotate ZSKs automatically, others don’t. For a manual setup, plan a ZSK rotation every 30-90 days; KSKs less often.
- External subdomains not delegated — if you delegate subdomains to third parties (e.g.
mail.yourdomain.comto an external mail provider), the subdomain must also have DNSSEC or be marked as insecure delegation. - Ignoring the CD bit — resolvers querying with
CD=1(Checking Disabled) explicitly opt out of validation. Applications should let the default validation happen.
Who Should Use DNSSEC?
Short answer: anyone running a domain for email or security-relevant services.
Longer answer:
- DANE prerequisite — DANE-SMTP works exclusively on DNSSEC-signed domains. No DNSSEC, no TLSA, no certificate pinning for inbound email.
- Compliance — GDPR and BSI recommendations explicitly call for DNSSEC on security-relevant domains. In the DACH region, adoption for
.deTLDs is comparatively high. - Phishing protection — DNS spoofing is a real attack on public Wi-Fi, compromised routers, ISP infrastructure. DNSSEC closes that gap.
- Brand integrity — if your MX, A, or TXT records get manipulated, your domain’s reputation suffers. DNSSEC binds the authenticity of each record to you.
Is DNSSEC a silver bullet? No. It does not replace TLS, doesn’t protect compromised endpoints, doesn’t prevent phishing emails per se. But it closes a fundamental gap on which every other DNS-based security standard relies — DMARC, DKIM, MTA-STS, DANE, BIMI.
Conclusion
DNSSEC makes DNS verifiable. Instead of blindly trusting the resolver, your system checks the signature chain from the root zone down to the answer. It is the foundation modern DANE-SMTP builds on, and a baseline component for security-conscious domain owners.
Activation is one-click at most DNS hosts. The only stumbling block is publishing the DS at the registrar — and only when your registrar doesn’t support external nameservers with DNSSEC.
DMARCPulse continuously monitors the DNSSEC state of every connected domain. With active DNSSEC you get a green status in the dashboard. On bogus validation errors (DS mismatch, expired keys) DMARCPulse fires a critical alert — before your domain becomes unreachable for DANE-capable receivers. DNSSEC is also the prerequisite for the DANE recommendations DMARCPulse delivers per domain. Get started today.
Related Topics
- What Is DANE? — DNSSEC is the foundation for TLSA-based cert pinning at SMTP
- What Is MTA-STS? — alternative TLS enforcement without DNSSEC, less strict but more widely supported
- What Is TLS-RPT? — reporting standard that surfaces TLS issues including DANE failures back to you
Summary
- DNSSEC signs DNS responses cryptographically, preventing spoofing and cache poisoning
- Activation is two-step: sign at the DNS host + publish DS record at the registrar
- Prerequisite for DANE-SMTP — no DNSSEC means no TLSA pinning
- Some DACH registrars (united-domains, Strato) don’t support DNSSEC with external nameservers — transferring to INWX/Hetzner/Cloudflare Registrar solves it
- DMARCPulse continuously monitors DNSSEC and fires a critical alert on bogus state