DANE eingehend mit Postfix einrichten

Die Konfiguration von Postfix für den DANE-authentizierten Empfang von TLS-gesicherten Emails ist ebenfalls recht einfach. Es setzt allerdings einen autoritativen DNSSEC-validierenden Nameserver voraus! Dessen Einrichtung ist etwas aufwändiger, und für BIND 9.9 bereits in unserem Wiki beschrieben.

Der autoritative Nameserver sendet dann DNSSEC-authentizierte Antworten, die von validierenden Resolvern als authentisch verifiziert werden können. Dies kann dann der MTA des Senders, u.a. Postfix, dazu nutzen, um die TLS-Verbindung zu unserem Mailserver mit DANE zu verifizieren.

Postfix Konfiguration für DANE

Um DANE auch für den Empfang von Emails zu aktivieren, muss die Konfiguration in /etc/postfix/main.cf ergänzt werden:


smtpd_tls_security_level = may


oder wenn nur TLS-Verbindungen akzeptiert werden sollen (das ist aber nicht zu empfehlen, da immer noch viele Mailserver keine korrekte TLS-Konfiguration haben):


smtpd_tls_security_level = encrypt


Ferner muss ein Zertifkat und ein dazu gehöriger Schlüssel, mit dem das Zertifikat (selbst) signiert wurde, angegeben werden:


smtpd_tls_key_file = /etc/postfix/ssl/certs/server.key

smtpd_tls_cert_file = /etc/postfix/ssl/certs/server.pem


Dann muss Postfix noch neu gestartet werden


service postfix restart


TLSA-Resource Record in der Zone


Damit sendende Mailserver das Zertifikat mittels DANE verifizieren können, muss in der Zone des autoritativen Nameservers ein entsprechender TLSA Resource Record vorhanden sein. Der Resource Record ist von der Form (siehe RFC 6698 und RFC 7671):

_<Port>._tcp.<Servername> IN TLSA <Certificate usage> <Selector> <Matching Type> <Fingerprint>


Die Zertifikatverwendung ist bei Serverzertifikaten 3, d.h. ein DANE-EE, also Domain-issued certificate. Der TLSA RR enthält, je nach "Selector" den Fingerprint des Zertifikats (Selector 0) oder des Public Keys (Selector 1), mit dem das Zertifikat signiert wurde. Matching Type bestimmt, ob ein Fingerprint in SHA-256, SHA-512 oder Exact erwartet wird.

Für die Verwendung auf Mailservern im allgemeinen sind dies wie folgt:

Certificate usageSelectorMatching typeFingerprint
3 (DANE-EE)0 (Full certificate)0 (Exact)ganzes Zertifikat
3 (DANE-EE)0 (Full certificate)1 (SHA-256)SHA-256 FP des Zertifikats
3 (DANE-EE)0 (Full certificate)2 (SHA-512)SHA-512 FP des Zertifikats
3 (DANE-EE)1 (SubjectPublicKeyInfo)0 (Exact)ganzer Public Key
3 (DANE-EE)1 (SubjectPublicKeyInfo)1 (SHA-256)SHA-256 FP des Public Key
3 (DANE-EE)1 (SubjectPublicKeyInfo)2 (SHA-512)SHA-512 FP des Public Key


Am häufigsten werden 3 0 1 und 3 1 1 verwendet. Exact match wird selten verwendet, weil dann das gesamte Zertifkat in der Antwort der TLSA-Anfrage übertragen werden muss.

Erstellen des TLSA-RR

Diesen kann man auf verschiedene Arten erstellen.

  • Zum einen kann er mit Standard-Kommandozeilentools erstellt werden:
  • Mit tsla aus dem hash_slinger Paket
  • ldns-dane aus den ldns-Tools verwendet werden
  • Online-Seiten zum Erzeugen


Standard Kommandozeilen-Tools (openssl awk)

openssl x509 -in /etc/postfix/ssl/certs/server.pem -outform DER | openssl sha256    | cut -d'=' -f2 | awk '{printf “IN TLSA 3 0 1 %s\n", $NF}‘

IN TLSA 3 0 1 b80b5de3c513eccd84e2cfdbf6e4b4e2b05e513140a27d05b4a76d40b46b7590


wobei hier noch der Port-tcp-Servername-Teil, _25._tcp.ws01.ws.dnssec.bayern., am Anfang noch selbst ergänzt werden muss.


Spezielle Tools sind hier etwas komfortabler, sie erstellen den ganzen Resource Record, den man dann in der Zone eintragen kann.


tlsa create

tlsa --create --port 25 --certificate /etc/postfix/ssl/certs/server.pem --selector 0 ws01.ws.dnssec.bayern

_25._tcp.ws01.ws.dnssec.bayern. IN TLSA 3 0 1 b80b5de3c513eccd84e2cfdbf6e4b4e2b05e513140a27d05b4a76d40b46b7590


ldns-dane-create

ldns-dane create -c /etc/postfix/ssl/certs/server.pem dnssec-ws01.ws01.ws.dnssec.bayern 25 -n


_25._tcp.dnssec-ws01.ws01.ws.dnssec.bayern.    3600    IN    TLSA    3 0 1 b80b5de3c513eccd84e2cfdbf6e4b4e2b05e513140a27d05b4a76d40b46b7590


Online-Dienste für die Erstellung von beliebigen TLSA-Records


Diese sind für den Anfang etwas komfortabler als die Kommandozeilen-Tools - letztere haben aber den Vorteil geskriptet werden zu können.


Simon Huques Webseite

SSL-Tools.net

Zone signieren und BIND neu starten

Danach muss natürlich die Zone wieder signiert werden und in BIND neu geladen werden.


Überprüfung der DANE-Verifizierung

Eine Überprüfung, ob nun beim Empfang von Mails TLS-Verbindung anderer Mailserver mit DANE-verifiziert werden, geht nur, wenn man entsprechend einen zweiten für DANE-ausgehend konfigurierten Mailserver verwendet.

Dort kann man das mit posttls-finger oder in den Logs, /var/log/mail.log, nach dem Versand einer Email überprüfen. Dort muss ein "Verified TLS connection" auftauchen.


Die SSL-Tools.net Webseite bietet auch eine Möglichkeit der Online-Überprüfung mit dem Mailserver-Check.