Es gibt inzwischen viele Webtools die TLSA-Records prüfen. Aber wer es einmal von Hand gemacht hat, versteht was dabei passiert. Der Ablauf ist immer gleich: Zertifikat vom Server holen, Hash berechnen, mit dem DNS-Record vergleichen.
Zertifikat holen
Verbindung zum Mailserver aufbauen und das Zertifikat per STARTTLS abholen:
openssl s_client -starttls smtp -connect smtp.kernel-error.de:25 \ -servername smtp.kernel-error.de 2>/dev/null | \ openssl x509 -outform PEM > /tmp/server.crt
Das Zertifikat liegt jetzt in /tmp/server.crt.
Hash berechnen
Welchen Hash man berechnen muss, hängt vom TLSA-Record ab. Die drei Felder im Record bestimmen das:
| Usage | 0 = CA, 1 = End-Entity (Kette muss gültig sein), 2 = Trust Anchor, 3 = End-Entity (keine Kettenprüfung) |
| Selector | 0 = ganzes Zertifikat, 1 = nur Public Key (SPKI) |
| Matching Type | 0 = exakter Vergleich, 1 = SHA-256, 2 = SHA-512 |
Am häufigsten sieht man 3 1 1 (End-Entity, nur Public Key, SHA-256) oder 3 0 1 (End-Entity, ganzes Zertifikat, SHA-256). Zuerst den TLSA-Record aus dem DNS holen um zu sehen was erwartet wird:
dig _25._tcp.smtp.kernel-error.de TLSA +short
Dann den passenden Hash berechnen. Bei Selector 0 (ganzes Zertifikat) und Matching Type 1 (SHA-256):
# Selector 0 (Full Certificate), SHA-256 openssl x509 -in /tmp/server.crt -outform DER | openssl sha256 # Ausgabe: SHA2-256(stdin)= 94c8e1bd...
Bei Selector 1 (nur SPKI, Public Key) und SHA-256:
# Selector 1 (SPKI), SHA-256 openssl x509 -in /tmp/server.crt -noout -pubkey | \ openssl pkey -pubin -outform DER | openssl sha256
Den berechneten Hash mit dem Wert aus dem TLSA-Record vergleichen. Stimmen sie überein, ist der Record korrekt.
Schnelltest mit posttls-finger
Wer nicht alles von Hand machen will: posttls-finger (Teil von Postfix) prüft den kompletten DANE-Ablauf in einem Schritt:
posttls-finger -t30 -T180 -c -L verbose,summary kernel-error.de
In der Ausgabe steht am Ende entweder Verified TLS connection established (DANE-Prüfung bestanden) oder eine Fehlermeldung mit dem konkreten Problem. Das Tool löst die MX-Records auf, holt den TLSA-Record, baut die TLS-Verbindung auf und vergleicht alles automatisch.
Wer DANE für den eigenen Mailserver einrichten will, findet die Anleitung unter Postfix mit DANE und DNSSEC absichern. Die Grundlagen zu DANE und TLSA-Records erklärt der Beitrag DNSSEC und DANE: TLS-Zertifikate mit TLSA-Records absichern. Fragen? Einfach melden.


Schreibe einen Kommentar