EMAIL SECURITY

DNSSEC Checker — Verify Your Domain's Chain of Trust

Signed, broken, or not enabled? Tri-state verdict, chain-of-trust walk, DANE-readiness, RRSIG expiry, and registrar-specific fix recipes — without reading the RFC.

Check DNSSEC for any domain

Tri-state verdict, chain of trust walk, DANE-readiness, and registrar-specific fix recipes when things go sideways.

Try:
What this checks
  • Signed, broken, or not enabled?

    Tri-state verdict — green for valid, amber for published-but-broken, neutral grey for the ~95% of domains that aren't signed.

  • Chain of trust

    Root → TLD → your zone. Text tree plus an inline SVG graph — drop either into a support ticket.

  • Fix recipes, not fortune-telling

    Registrar-specific steps for Cloudflare / GoDaddy / Namecheap / Route 53 when the chain breaks.

What this doesn't do (v1): full recursive cryptographic trace — for that, DNSViz is the right next step.

Quick summary

  • 1Is the zone signed? If no DS record sits at the parent registrar, DNSSEC isn't enabled — that's the state for ~95% of domains and it's fine for most use cases.
  • 2Does the AD flag come back? A validating resolver (Cloudflare 1.1.1.1 or Google 8.8.8.8) sets the Authenticated Data bit only when every signature from the root down to your zone verifies. That's the single canonical “DNSSEC works” signal.
  • 3Are you DANE-ready? Only zones with a valid DNSSEC chain can usefully publish TLSA records for SMTP DANE. We wire through to the DANE checker automatically when your zone passes.

“Not enabled” is the global default — we render it in neutral grey, not red. We only go amber when the zone is actively broken (records present, chain broken), which is the genuinely bad state that needs attention.

What you'll see in the result

DNSSEC fails silently. A broken chain returns SERVFAIL to a validating resolver and no signal at all to a non-validating one — your domain just stops resolving for some users and nobody tells you. The checker walks each gate a validating resolver walks. Five things to look for:

1

Three states, not pass/fail.

Valid, published but broken, not enabled. “Not enabled” is the state most domains are in — neutral grey, no alarm. “Published but broken” is the genuinely bad state; that gets amber. Valid is green and wires through to the DANE checker.

2

The chain of trust as a readable tree.

Root → TLD → your domain, with a ✓ or ✗ next to each hop. Copy-pasteable text, not a screenshot of a node graph. Drop it into a support ticket and whoever reads it knows exactly where the chain broke.

3

Algorithm names with plain-English verdicts.

Instead of raw 8, you see “RSASHA256 (8) — modern, widely supported.” Instead of 5, “RSASHA1 (5) — deprecated per RFC 8624, rotate to algo 13.” You know at a glance whether your algorithm is fine, getting old, or actually dangerous.

4

Fix recipes written for your actual registrar.

Not “rotate your keys.” Instead: “Your registrar's DS record (keytag 42069) points to a key your zone no longer has. Log in to Cloudflare → DNS → DNSSEC → replace with keytag X.” We keep copy for Cloudflare, GoDaddy, Namecheap, and Route 53; the tool pre-selects the right tab based on your nameservers.

5

A story that matches your failure.

When your result comes back “published but invalid,” we tell you this is the pattern that took Slack offline in 2021, .fj in 2022, and .nz in 2023 — and link each post-mortem. Turns a scary result into a recognisable one.

What is DNSSEC? RFC 4033 in 90 seconds

DNSSEC (DNS Security Extensions, RFC 4033–4035, consolidated in RFC 9364) cryptographically signs DNS records so resolvers can verify they haven't been tampered with in transit. A DNSSEC-protected domain publishes DNSKEY records signed by the zone, with a matching DS record at the parent registrar — forming an unbroken chain of trust from the DNS root down. For email admins, DNSSEC is the gate that unlocks DANE (RFC 7672): without a signed zone, TLSA records are silently ignored by compliant MX servers, and opportunistic TLS downgrade attacks remain possible. Adoption sits near 4% of .com in 2026, growing ~45% YoY — “not enabled” is the global default, not a failure.

The protocol doesn't encrypt DNS queries — that's DoH and DoT's job. DNSSEC answers a different question: “this DNS answer I received, is it the one the authoritative server actually published?” Without DNSSEC, anything in the resolution path — your ISP, a misbehaving middlebox, a compromised public Wi-Fi — can quietly rewrite the answer. With DNSSEC, the resolver either verifies an end-to-end signature chain and sets the AD flag, or rejects the answer entirely and returns SERVFAIL.

In practice, most operational drama around DNSSEC comes from three places: rolling keys without breaking the chain at the registrar, keeping RRSIG signatures re-signed before they expire, and remembering to update the DS at the registrar when you change DNS providers. This tool surfaces all three states and tells you which one you're in, in plain English.

How does the chain of trust walk work?

Every DNSSEC query walks the same path. The resolver starts from a pre-configured trust anchor — almost always the IANA root KSK (key-tag 20326 as of this writing) — and verifies the signature on the root's DNSKEY RRset. That signed DNSKEY set includes the DS record for the next level down; resolve that zone, verify its DNSKEY against the DS, repeat until you reach the zone you actually want. At every step, the resolver has to see both a DS record at the parent and a matching DNSKEY at the child. Remove either one and the chain stops.

For a typical two-label domain like example.com, that's exactly three hops: root, com., and the domain. Three-label domains like blog.example.co.uk add one more hop. This tool renders those hops as a readable ASCII tree — useful when you need to paste the result into a ticket, a Slack channel, or an incident doc. Screenshots of node graphs don't survive the round-trip through support channels; text does.

The inline SVG graph adds the intra-zone detail: within your zone, there's usually a KSK (Key Signing Key, flag bit 15 set) and one or more ZSKs (Zone Signing Keys). The KSK signs the DNSKEY RRset and is the specific key the parent DS record points to. The ZSK signs everything else in the zone. Rolling the ZSK is routine automation; rolling the KSK requires coordination with the registrar because the DS has to change too.

Which signing algorithms should you use?

DNSKEY records carry four numbers: flags (2 bytes), protocol (always 3), algorithm (one of a dozen IANA-assigned values), and the public key itself. The algorithm is the interesting one — it determines signature size, validation cost, and whether the zone meets current best-practice.

Algorithm 8 (RSA/SHA-256) vs Algorithm 13 (ECDSA P-256)

AspectAlgo 8 — RSASHA256Algo 13 — ECDSAP256SHA256
Signature size~256 bytes (2048-bit key)~64 bytes
Validation costBaseline~10× faster
Resolver supportUniversal~98% (2025); universally safe
Best forLegacy zones already running itNew zones; the modern default
Response size impactHigher — can push over UDP 512/1232Fits comfortably under every UDP MTU

How to read a DNSKEY record

The DNSKEY flags field is 16 bits. The bit you care about is bit 15 (value 0x0001), called SEP (Secure Entry Point). When SEP is set, the key is a KSK — a Key Signing Key — and that's the key the parent DS record has to match. When SEP is clear, it's a ZSK. The flag field alone is how this tool labels each DNSKEY as KSK or ZSK.

Algorithms 1, 3, 5, 6, 7, and 12 are deprecated under RFC 8624 — MUST NOT be used for new signing. Algorithm 10 (RSASHA512) is acceptable but uncommon. Algorithms 14 (ECDSAP384), 15 (ED25519), and 16 (ED448) are modern and safe. When you see a deprecated algorithm in your result, the fix is always the same: rotate to 13 (or 15) using your DNS provider's algorithm-change flow.

NSEC vs NSEC3 — which proves non-existence better?

DNSSEC has to prove that records don't exist, not just the ones that do. Otherwise, an attacker could strip records out in transit and the resolver would have no way to detect the omission. NSEC and NSEC3 are the two mechanisms DNSSEC defines for this.

AspectNSECNSEC3
RFCRFC 4034 §4RFC 5155, guidance RFC 9276
Zone walkingTrivial — names are in plaintextRequires dictionary attack on hashes
Iteration countN/AShould be 0 per RFC 9276
Best forSmall zones, nothing to hideDefault — privacy-preserving
Response complexitySimpleHash comparisons in the resolver

The NSEC3 iteration count was originally intended to slow down zone-walking attacks by making hash computation expensive. Reality turned out otherwise: the cost falls on validating resolvers, which have to recompute the hash to verify every denial. RFC 9276 (July 2022) recommends iteration count 0; some modern resolvers cap incoming iterations at 100 and will refuse or downgrade zones that exceed that. If your zone has high iterations, lower them during the next re-signing.

Why does DNSSEC break?

Across SIDN, Cloudflare, and academic field studies, production DNSSEC outages cluster into a small set of named patterns. Every zone that fails DNSSEC fails in one of these five ways:

  1. 1

    DS / DNSKEY mismatch at delegation (30–40%)

    The parent registrar holds a DS record pointing to a key-tag / algorithm that your zone no longer publishes. Classic stale-DS-after-rollover pattern. Fix: either re-publish the DNSKEY the DS points at, or update the DS at the registrar to match a current DNSKEY.

  2. 2

    Expired RRSIG signatures (25–35%)

    The zone's signatures have passed their expiration date. Validating resolvers treat the zone as BOGUS. Usually means your provider's automated re-signing pipeline paused or broke. Fix: toggle signing off/on at the provider or manually re-sign.

  3. 3

    Key rollover misconfiguration (15–25%)

    Multiple KSKs are visible but the overlap window went wrong — e.g., the new DS was published at the registrar before the new DNSKEY appeared in the zone. Fix: RFC 7583 choreography — never remove a DS until the corresponding DNSKEY has been gone from the zone for TTL + propagation.

  4. 4

    NS change without DS update (10–20%)

    Moved DNS providers without regenerating and updating the DS. Old DS at the registrar points to a key the new provider doesn't have. Fix: remove the DS before the NS cutover to revert to unsigned temporarily, then re-publish once the new provider is live.

  5. 5

    Clock skew (5–10%)

    Your resolver's clock drifted outside the RRSIG validity window. The zone is fine; the resolver you're using is broken. Fix: sync the resolver's clock via NTP. Authoritative-server clock skew can cause this too but is rare on managed providers.

A domain can be in one of three DNSSEC states: not enabled (no DS record at the registrar — the majority of the internet), published but invalid (DNSKEY/DS mismatch, expired RRSIG, or incomplete key rollover — the Slack 2021 24-hour outage, .fj 2022, and .nz 2023 incidents all fell here), or valid (AD flag set, chain intact from root). Diagnosing which state you're in requires checking DS at the parent zone, DNSKEY at the domain itself, and the AD (Authenticated Data) flag on a DNSSEC-aware resolver. RFCs 4033/4034/4035 and the consolidating RFC 9364 define the protocol; RFC 7672 explains why email operators increasingly care.

Real-world outages worth knowing

When a domain lands in "published but invalid," it's the same failure class that took Slack offline in 2021, .fj in 2022, and .nz in 2023. Reading one of these post-mortems before you deploy DNSSEC pays for itself the first time a rollover goes sideways.

How does DNSSEC unlock DANE?

DNSSEC is a prerequisite for DANE (RFC 7672). DANE lets a domain pin the expected TLS certificate for its mail servers by publishing a TLSA record, anchoring trust in DNS instead of the public certificate authority system. Without DNSSEC, that TLSA record carries no authority — an attacker could forge both the cert and the pin — so compliant SMTP receivers silently ignore TLSA when the AD flag isn't set.

DNSSEC

Signs DNS answers. Foundational layer — unlocks DANE, hardens the lookup path for SPF / DKIM / DMARC / BIMI.

DANE

TLSA records at _25._tcp.<mx>. TLS authentication between MTAs, anchored in DNSSEC.

MTA-STS

The DNSSEC-free alternative. Policy served over HTTPS, anchored in the public Web PKI. Works without DNSSEC; most US domains run this instead of DANE.

If you already run DNSSEC, DANE is the natural next step and we'll wire you through to the DANE checker. If you don't run DNSSEC and don't want the operational overhead, MTA-STS gives you most of the same TLS-enforcement threat model without a DNSSEC dependency — the pragmatic fallback.

Should you enable DNSSEC in 2026?

DNSSEC adoption sits around 4% of .com and 5% of .net per APNIC Labs and ICANN OCTO data, with end-to-end resolver-side validation at roughly 0.47% of DNS queries globally. Those numbers are growing (~45% YoY) but remain modest. “Not enabled” is the global default, and it's a deliberate architectural choice for most domains, not an oversight.

Enable DNSSEC when: you want DANE for SMTP; you operate under a regulatory framework that requires it (EU government under Forum Standaardisatie, German email service providers under BSI TR-03108, etc.); you run your own DNS infrastructure and want DNS-level tamper evidence; or you're in a high-value brand-impersonation threat model where an attacker could reasonably compromise an ISP or middlebox. Skip DNSSEC when you're a small site that already runs HTTPS — the marginal security benefit is small relative to the operational complexity, and a broken DNSSEC rollout can take your domain offline for hours.

One-click DNSSEC on Cloudflare, Route 53, or Google Cloud DNS takes minutes to enable. The hard part is keeping the DS record at the registrar synchronised with the DNSKEY at the provider across every key rollover, every NS change, and every provider migration. Most providers automate the first but not the others — the operational discipline is on you.

How to read your DNSSEC check result (5 steps)

  1. 1

    Enter your domain and run the check

    Type a domain without protocol or path (example.com, not https://example.com/). The tool walks all required DNS queries in parallel — expect results in ~2 seconds on a signed zone, ~1 second on an unsigned one.

  2. 2

    Read the tri-state badge

    Green `DNSSEC Valid` means the chain validates end-to-end; amber `DNSSEC Published — Invalid` means records exist but the chain is broken; neutral grey `DNSSEC Not Enabled` is the default state for ~95% of domains — not a failure, just the global baseline.

  3. 3

    Walk the chain of trust

    The text tree shows root → TLD → your zone with ✓ / ✗ at each hop. When something's wrong, the last ✓ before the ✗ tells you which layer broke. Copy-paste this into your ticket — it's much clearer than a screenshot of a graph.

  4. 4

    Verify the algorithm and digest type

    Check the DNSKEY card for algorithm name and strength verdict. If you see `RSASHA1 (5) — deprecated`, rotate to algorithm 13 (ECDSAP256SHA256). Same for DS digest type 1 (SHA-1) — move to digest type 2 (SHA-256).

  5. 5

    Confirm the DS at your registrar

    The `DS records` card shows what the parent zone is publishing. Cross-check those key-tags against the DNSKEYs at your zone — they must match. When they don't, that's a DS/DNSKEY mismatch: the most common DNSSEC failure mode and the one the registrar fix-recipe tab will walk you through.

Common mistakes

  • Don't enable DNSSEC and then change DNS providers. Old DS at the registrar points to a key the new provider doesn't have — instant BOGUS. Remove the DS first (temporary unsigned), then cut over, then re-sign and publish the new DS.

  • Don't sign with deprecated algorithms. Algorithms 1, 3, 5, 6, 7, and 12 are MUST NOT under RFC 8624. If you see any of those in a result, rotate to algorithm 13 (ECDSAP256SHA256) — smaller, faster, universally supported.

  • Don't roll a KSK without the 2-TTL overlap. Publish the new DNSKEY, wait for the old KSK TTL to expire globally, then update the DS at the registrar. Skip the wait and you're Slack in 2021.

  • Don't enable DNSSEC without monitoring RRSIG expiry. If your provider's re-signing pipeline pauses, your zone goes BOGUS the moment signatures expire. Alert on RRSIG lifetime, not just DS presence.

Authoritative deep-dives

This tool gets you an interactive answer in a few seconds. For a full cryptographic trace or long-form reference, the following are the tools and docs we trust:

DNSSEC FAQ

Frequently Asked Questions

DNSSEC, the chain of trust, algorithm choices, NSEC vs NSEC3, the DANE linkage, and the outages people actually run into.

Still have questions about DNSSEC?