Support Library
DNSSEC Failures (Broken vs Missing)
Unsigned zones still resolve; broken DNSSEC makes validating resolvers return SERVFAIL. How to tell the states apart and fix a broken chain.
The short answer
Missing DNSSEC and broken DNSSEC are very different. A zone without DNSSEC is simply unsigned: resolvers treat it as insecure and answer normally, so it works, just without protection against forged answers. A zone with broken DNSSEC has a chain of trust that does not verify, and every validating resolver answers SERVFAIL. For users behind those resolvers, including 1.1.1.1, 8.8.8.8, 9.9.9.9 and many ISPs, the domain is down.
| State | DS in parent | Zone signed | Result at a validating resolver |
|---|---|---|---|
| Unsigned (missing) | No | No | Insecure: normal answers, no AD flag |
| Signed but not anchored | No | Yes | Insecure: normal answers, no AD flag; the signatures are ignored |
| Secure | Yes, matching a key | Yes, valid signatures | Secure: answers with the AD flag |
| Bogus (broken) | Yes | Keys do not match, signatures expired, or zone unsigned | SERVFAIL |
What breaks a chain
- Moving DNS providers without removing or replacing the DS record. The new provider signs with different keys, or does not sign at all, and the old DS no longer matches. This is the most common cause.
- A key rollover where the DS was changed too early, or the old key was removed before caches had the new one. See DNSSEC key rollovers.
- Expired signatures because the signer stopped running or a hidden primary stopped sending updates.
- Turning off signing at the provider while the DS stays at the registrar.
- Name servers that strip RRSIG records or fail to return DNSKEY over TCP.
An algorithm the resolver does not support is different: RFC 4035 tells the resolver to treat the zone as unsigned, so the domain still resolves, just without validation. It does not need the DS removed; move to a widely supported algorithm such as 13 (ECDSA P-256) when you can.
Telling them apart
| Command | What it shows |
|---|---|
| dig +dnssec example.com DS | Inspect the full status and DNSSEC denial of DS, not just an empty answer. Authenticated DS absence makes the child insecure only when the ancestor chain validates and no separate trust anchor applies. |
| dig +dnssec +norecurse @ns1.example.net example.com DNSKEY | The keys and their signature from your own server |
| dig @1.1.1.1 example.com A | SERVFAIL here, often with an Extended DNS Error such as "DNSKEY missing" or "Signature expired" |
| dig @1.1.1.1 +cd example.com A | An answer here, with checking disabled, is strong evidence of a validation problem; confirm with EDE, DNSViz or a local validator |
DNSViz draws the whole chain and marks the link that fails. Debugging DNSSEC validation errors goes through each error.
Fixing a broken chain
First repair signing or restore the key matching the parent DS: re-sign expired data, publish missing keys or repair synchronization as appropriate. This can recover service sooner while preserving authentication. If repair cannot be completed promptly, removing DS at the registrar is an emergency fallback that deliberately removes DNSSEC protection after cached DS records expire; it is not immediate recovery. Before adding a new DS, verify the signed zone and DNSKEY, then follow the rollover and cache timing. If the provider supports CDS/CDNSKEY and your registry or registrar reads them, it can automate DS updates.
How DNS Panopticon helps
The shared scan looks up DS and DNSKEY at the apex and checks the resolver’s AD flag. Domain Visualizer shows the records; Security Posture shows these findings:
- DNSSEC is not enabled when there is neither, which is informational but the active scoring model still deducts points for it;
- DNSSEC broken when there is a DS but no DNSKEY could be retrieved, which is what a validating resolver also returns for many bogus zones;
- DNSSEC validation not confirmed when both exist but the resolver did not set AD;
- DNSKEY without a DS when the zone is signed but not anchored, so it is treated as unsigned;
- DNSSEC is enabled and validates when both exist and AD is set.
It does not walk the chain link by link, so use DNSViz to find the exact fault.
Sources and further reading
- RFC 4033: DNS Security Introduction and Requirements: secure, insecure and bogus states
- RFC 4035: Protocol Modifications for the DNS Security Extensions: section 4.3 on validation outcomes
- RFC 8078: Managing DS Records from the Parent via CDS/CDNSKEY
- RFC 8914: Extended DNS Errors
- DNSViz
- ICANN: DNSSEC, what is it and why is it important?