DNSSEC: How to Enable and Verify It

How DNS Security Extensions protect against cache poisoning and how to check your domain's signing chain.

What DNSSEC protects against

The DNS protocol was designed without authentication. A resolver that queries for example.com A has no way to verify that the answer it receives is genuine — it could have been injected by an attacker anywhere between the resolver and the authoritative server. This is the basis of the Kaminsky cache poisoning attack (published 2008): by flooding a resolver with forged responses, an attacker can cause it to cache a malicious IP address for a domain, silently redirecting all users who query through that resolver.

DNSSEC (DNS Security Extensions, RFC 4033–4035) addresses this by adding cryptographic signatures to DNS records. A validating resolver can verify that a response was signed by the legitimate zone owner and has not been tampered with in transit.

What DNSSEC does not protect: it does not encrypt DNS queries (that is DNS-over-HTTPS or DNS-over-TLS), it does not prevent DDoS against authoritative servers, and it does not protect against a compromised authoritative server. DNSSEC proves authenticity, not confidentiality or availability.

How it works

DNSSEC builds a chain of trust from the DNS root downward. Each zone signs its records and publishes the public key in DNS itself. Parent zones vouch for child zones by publishing a hash of the child's key.

The core record types involved:

Zones typically use two key pairs: the Key Signing Key (KSK), which signs the DNSKEY RRset itself and whose hash is published as the DS record in the parent zone, and the Zone Signing Key (ZSK), which signs all other records in the zone. The KSK is changed rarely (low rollover overhead from the parent); the ZSK rotates more frequently (no parent interaction needed for ZSK rollover).

Validation works by traversing from root to leaf: the resolver trusts the root zone's DNSKEY (distributed as a trust anchor), uses it to verify the .com DS record, uses that to verify example.com's DNSKEY, and uses that DNSKEY to verify the RRSIG on the A record.

How to enable it

Enabling DNSSEC involves two parties: your DNS provider (who manages the zone) and your registrar (who manages the parent DS record).

The standard procedure:

  1. Enable signing at your DNS provider. Most managed DNS providers (Cloudflare, Route 53, Google Cloud DNS) handle key generation and RRSIG creation automatically when you enable DNSSEC in the control panel.
  2. Retrieve the DS record. After signing is enabled, your DNS provider will give you a DS record — a digest of your KSK — to publish in the parent zone.
  3. Submit the DS record to your registrar. Log into your domain registrar's control panel and enter the DS record (key tag, algorithm number, digest type, digest). This links the parent zone to your zone's signing key.
  4. Verify the chain. After propagation (usually minutes to an hour), validate using a DNSSEC-aware resolver.

Key rollover requires updating the DS record at the registrar. Pre-publish the new DNSKEY, wait for caches to expire, then update the DS record at the registrar, then remove the old DNSKEY. Skipping the wait causes a validation gap.

Algorithm choices

The signing algorithm determines the key type and signature scheme. Current recommendations:

Algorithms to avoid: RSASHA1 (algorithm 5) and DSA (algorithm 3) are deprecated. SHA-1-based algorithms are prohibited by most validators. If your zone was signed years ago and has never been reviewed, check the algorithm number in your DNSKEY record.

How to verify

To manually verify a domain's DNSSEC chain, query each link in the chain:

A valid chain shows: DS in .com matches DNSKEY in example.com, and RRSIG signatures are present and within their validity window. A DNSSEC-validating resolver returns the AD (Authenticated Data) flag in the response when validation succeeds.

Use the +dnssec flag in the DNS inspector to run a full chain validation that shows each step, flags algorithm numbers, and checks RRSIG expiry dates.

Common failure modes

DNSSEC and DANE

DANE (DNS-based Authentication of Named Entities) publishes TLS certificate pins as TLSA records in DNS. DANE is only meaningful when the DNS records are DNSSEC-signed — otherwise an attacker who can manipulate DNS can also replace the TLSA record with one matching their own certificate. DNSSEC is a prerequisite for DANE, not an optional add-on. If you intend to deploy DANE for SMTP (for email transport security), DNSSEC on your domain must be working correctly first.

Validate your domain's DNSSEC chain

Validates the DNSSEC chain of trust for your domain, including DS, DNSKEY, and RRSIG records.