DNSSEC validation is failing because the DNS resolver can’t cryptographically verify the authenticity of DNS records.

Common Causes and Fixes for DNSSEC Validation Failures

  1. Expired DNSSEC Keys:

    • Diagnosis: Check the validity periods of your DNSSEC keys, specifically the Key Signing Key (KSK) and Zone Signing Key (ZSK). Tools like dig +dnssec can show you the signatures and their validity. You can also use online DNSSEC validators.
    • Fix: If keys have expired, you need to re-sign your zone with new keys. This involves generating new ZSKs, rolling over the KSK (if necessary), and updating the DS record at the parent zone with the new KSK’s public information. For example, if your domain is example.com, you’d use tools like dnssec-signzone or your DNS provider’s interface to re-sign. The process often involves dnssec-signzone -N increment -o example.com -t db.example.com.signed db.example.com followed by uploading the new db.example.com.signed and updating the DS record at the .com registry.
    • Why it works: DNSSEC relies on a chain of trust anchored by cryptographic signatures. Expired keys break this chain, as older signatures are no longer considered valid. Re-signing with current keys restores the chain of trust.
  2. Incorrect DS Record at Parent Zone:

    • Diagnosis: Verify that the Delegation Signer (DS) record for your domain matches the KSK of your zone exactly. This includes the Key Tag, Algorithm, Digest Type, and Digest. Use dig DS example.com @a.iana-servers.net to check the DS record at the parent zone (IANA for .com or .org). Compare this digest with the KSK digest of your zone.
    • Fix: Correct the DS record at the parent zone registrar. This usually involves logging into your domain registrar’s portal and updating the DS record to match the current KSK information from your zone. For example, if the DS record at .com is 12345 8 1 1234567890ABCDEF..., and your zone’s KSK digest is FEDCBA0987654321..., you’d update the DS record at the registrar to reflect the correct digest.
    • Why it works: The DS record at the parent zone is the link that allows a resolver to verify the authenticity of your zone’s keys. If it’s incorrect, the resolver cannot establish trust in your zone, even if your zone’s keys are valid.
  3. Clock Skew on DNS Servers:

    • Diagnosis: Ensure that the system clocks on your authoritative DNS servers are synchronized with accurate time sources (e.g., NTP servers). Significant clock skew can cause signatures to appear expired or not yet valid. Use ntpdate -q pool.ntp.org or chronyc sources to check.
    • Fix: Configure and enable NTP on your DNS servers. For example, on a Linux system, edit /etc/ntp.conf to point to reliable NTP servers and ensure the ntpd service is running: systemctl enable ntp && systemctl start ntp.
    • Why it works: DNSSEC signatures have validity periods tied to time. If a server’s clock is significantly ahead or behind, it might incorrectly assess a signature as expired or not yet valid, leading to validation failures.
  4. Incorrectly Rolled-Over Keys:

    • Diagnosis: If you’ve recently rolled over your KSK or ZSK, there’s a period where both the old and new keys are active. Ensure the zone has been re-signed with the new keys and that the DS record at the parent zone points to the new KSK. Check the serial numbers and signatures for both old and new keys in your zone file and the DS record at the parent.
    • Fix: Complete the key rollover process. This typically involves:
      1. Publishing the new KSK (if changing KSK) or ZSK.
      2. Waiting for the new ZSK’s signature to propagate and become valid.
      3. Updating the DS record at the parent zone to point to the new KSK.
      4. Waiting for the DS record update to propagate.
      5. Removing the old KSK. For example, if your serial is 2023010101, after a rollover, you might see signatures from both serials. The DS record at the parent must point to the new KSK’s digest.
    • Why it works: A smooth key rollover requires careful coordination between the zone’s keys and the DS record at the parent zone. A mismatch during the transition, where the DS record points to an old KSK or a new KSK that isn’t yet trusted by the chain, will cause validation failures.
  5. Zone File Syntax Errors or Missing Records:

    • Diagnosis: Ensure your zone file is syntactically correct and contains all necessary DNSSEC records (RRSIG, DNSKEY, NSEC/NSEC3). Missing or malformed RRSIG records for critical record types will cause validation to fail. Use named-checkzone -d yourzone yourzonefile to check for errors.
    • Fix: Correct any syntax errors in the zone file and ensure all required DNSSEC records are present and correctly formatted. For example, if an A record is missing its corresponding RRSIG record, named-checkzone will flag it, and you’ll need to regenerate the signature for that record.
    • Why it works: DNSSEC validation requires that every record type in a zone is cryptographically signed. If a signature is missing or malformed, the resolver cannot verify the integrity of that record, leading to a validation failure for the entire zone.
  6. Resolver Configuration Issues:

    • Diagnosis: If you control the validating resolver (e.g., BIND, Unbound), check its configuration. Ensure DNSSEC validation is enabled (e.g., dnssec-enable yes; in BIND, auto-trust-anchor-file: "/var/lib/unbound/root.key" in Unbound). Also, check that the resolver has access to the root trust anchor (TA) and that it’s up-to-date.
    • Fix: Enable DNSSEC validation in your resolver’s configuration and ensure the trust anchor is correctly configured and updated. For BIND, add dnssec-validation auto; to named.conf.options. For Unbound, ensure auto-trust-anchor-file is set and that the file is populated (e.g., unbound-anchor -a /var/lib/unbound/root.key).
    • Why it works: The validating resolver is the component that performs the cryptographic checks. If it’s not configured to perform DNSSEC validation or lacks the necessary trust anchors, it cannot verify DNSSEC-signed zones.

The next error you’ll likely see after fixing DNSSEC validation is a SERVFAIL response from the resolver for all queries to the affected domain, indicating that the resolver encountered an issue during the DNS resolution process.

Want structured learning?

Take the full Dns course →