RFC 6698

DANE: DNS-based Authentication of Named Entities

DANE pins a hash of your TLS certificate in DNS via TLSA records. Receivers can then validate the cert without trusting public Certificate Authorities — the DNSSEC chain is the trust anchor.

TL;DR

What it does

DANE is the answer to 'I don't fully trust the public CA system.' Instead of asking 'is this cert signed by a CA my system trusts,' a receiver asks 'is this cert's hash the one the domain published in DNS?' That removes the CA from the trust chain entirely.

DANE only provides real protection when DNSSEC is in place. Without DNSSEC, an attacker who can spoof DNS can spoof the TLSA record too, and you've gained nothing.

For SMTP, DANE is published at _25._tcp.<mx-host> with TLSA records listing (usage, selector, matching-type, certificate-association-data). The standard profile for SMTP is 3 1 1: DANE-EE (skip CA validation), SPKI (hash the public key, not the cert), SHA-256.

How it works

  1. Enable DNSSEC on your domain and confirm it validates from public resolvers (1.1.1.1, 8.8.8.8, 9.9.9.9 with the AD bit set).
  2. Compute the SHA-256 of your MX server's SubjectPublicKeyInfo (SPKI).
  3. Publish a TLSA record at _25._tcp.<mx-host> with value '3 1 1 <hash>'.
  4. Sending servers that support DANE-SMTP (Postfix with smtp_tls_security_level=dane) will refuse to deliver mail to your MX unless the cert hash matches.

Example record

_25._tcp.mail.yourdomain.com TLSA

3 1 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

Common pitfalls

Related tools

Want PhishFence to monitor DANE for your domains?

Sign up free, add a domain, and PhishFence will continuously check DANE (and the rest of the email-auth stack) for you.

Start free