DNSSEC check
Enter a domain and we follow its chain of signatures down from the root zone. You’ll learn whether the domain is unsigned, signed and valid, half configured or broken, and which record to fix.
The gap DNSSEC closes
When your computer asks “what is the address of example.com?”, the answer comes back as a small unprotected packet. The original DNS gives the receiver no way to check who wrote it. Someone sitting between you and the name server, or someone who slips a forged answer into a resolver’s memory, can send visitors and mail to a machine of their choosing.
DNSSEC adds signatures. The owner of a zone signs every set of records with a private key and publishes the matching public key in the zone as a DNSKEY record. A resolver that receives an answer also gets its signature (RRSIG) and can verify that the records are exactly what the owner published. DNSSEC doesn’t encrypt anything and doesn’t hide which names you look up. All it does is prove that an answer is genuine.
A chain of fingerprints
A public key sitting in the same place as the data doesn’t prove much, since a forger could replace both. So each zone asks the zone above to vouch for it. The parent publishes a DS record, a short fingerprint (digest) of the child’s key, and signs that record with its own key. The parent’s key is vouched for by its own parent in the same way, all the way up to the root zone. The root key is the one thing a resolver has to know in advance, and it ships with the resolver software.
For example.com the path goes like this: root key, DS for com in the root, keys of com, DS for example.com in com, keys of example.com, signed records. One missing or wrong link and the proof fails.
The DS record is the part that lives outside your DNS host. It’s handed to the registry through your registrar, and most failures come from that split.
What this check does
For the root, the top-level zone and each zone down to your domain, our server reads the DS records at the parent and the DNSKEY records of the zone. It reads them through public resolvers with validation switched off (the “checking disabled” flag), so it can still inspect a broken zone. For every key it computes the key tag, and for every DS it recomputes the digest from the key with the same hash function (RFC 4034) and compares the two byte for byte.
Then it asks three validating public resolvers (Cloudflare, Google and Quad9) for the domain’s SOA record, this time with validation on. A resolver that validated the answer sets the AD flag (“authenticated data”). One that found a fault answers SERVFAIL. Our server matches fingerprints itself, but it doesn’t verify the signatures. That verdict belongs to the resolvers.
| Verdict | What was found | Effect |
|---|---|---|
| Not signed | No DS, no DNSKEY | Works everywhere, answers can’t be verified. Most domains. |
| Signed and valid | DS matches a key, resolvers set AD | Validating resolvers reject forged answers. |
| Half configured | DNSKEY present, no DS | Works, but nobody checks the signatures. |
| Broken | DS without a matching key, or SERVFAIL only when validation is on | Unreachable for everyone behind a validating resolver. |
The check also flags algorithms that are retired or weak (RSA/MD5, DSA, RSA/SHA-1, SHA-1 digests in a DS), a DS left over from an old key, signatures within three days of their end date, and whether the zone uses NSEC or NSEC3 to prove that a name doesn’t exist.
Fixing a broken chain
A broken chain is worse than no DNSSEC at all, because validating resolvers refuse to answer. It usually goes like this: the domain moved to a new DNS host, the old DS record stayed behind at the registrar, and it now points to a key that no longer exists.
- To get back online fast, delete the
DSrecord at the registrar. The domain becomes unsigned and works for everyone once caches expire, typically within a day. - To keep DNSSEC, open the DNSSEC page of your current DNS host, copy the
DSrecord it shows (key tag, algorithm, digest type, digest) and enter it at the registrar in place of the old one. - Before the next move, remove the
DSrecord first, wait a day, change name servers, then sign and publish the newDS.
For “half configured”, either finish the job by publishing the DS record or switch signing off at the DNS host.
Resolvers keep answers, failures included, for as long as the record’s TTL allows. Right after a fix, this page can show the old state for a while, and different resolvers can disagree.
Questions people ask
Do I need DNSSEC on my domain?
It’s optional, and most domains run without it. It protects visitors and mail against forged DNS answers, and a few uses require it, such as DANE for mail servers. If your DNS host and registrar handle it with one switch, turning it on costs little. If you move DNS hosts often, plan each move carefully.
What is the difference between a DS record and a DNSKEY record?
A DNSKEY is a public key, published in your own zone by your DNS host. A DS is a fingerprint of that key, published in the parent zone (.com, .org) through your registrar. The DS is what ties your zone to the chain.
Why does my site work for me but not for other people?
If DNSSEC is broken, what happens depends on each visitor’s resolver. Resolvers that validate (Google, Cloudflare, Quad9, many large providers) return an error. Resolvers that don’t validate still answer. Run the check. A “broken” verdict with “validation switched off: answers” is exactly this situation.
What are KSK and ZSK?
Two roles for keys in a zone. The key-signing key (KSK, flag 257) only signs the set of keys, and it’s the one the DS record points to. The zone-signing key (ZSK, flag 256) signs all the other records and can be replaced without touching the registrar. Some hosts use a single key for both.
Which DNSSEC algorithm should a zone use?
Algorithm 13 (ECDSA P-256 with SHA-256) is the common choice today, with small signatures and wide support. Algorithm 8 (RSA with SHA-256) is fine too. Algorithms 5 and 7 rely on SHA-1 and should be replaced. Algorithms 1, 3, 6 and 12 are retired.
How long does a DNSSEC change take to show?
A DS change reaches the registry within minutes at most registrars, but resolvers keep the previous DS for its TTL, often 24 hours for .com. Give it a full day before you judge the result.