{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreigdffyost7hc3zwliv3bkubdavd5dtsaego45ubyivazef2sfprea",
    "uri": "at://did:plc:nkxz2ojdvmieg2nhphvputvp/app.bsky.feed.post/3mmoaajlvhc22"
  },
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreic2qrd45e72jes4cx3olw7rkbdwznryxqjnjmmtk3hs7qvfel23dq"
    },
    "mimeType": "image/png",
    "size": 1123014
  },
  "description": "TLSA- und DANE-Records manuell pruefen mit OpenSSL, dig und hash-slinger. Fingerprint-Berechnung fuer Selector 0/1 und Matching-Type 0/1/2 durchgespielt. Nuetzlich wenn ein TLSA-Record nicht validiert und man wissen will warum.",
  "path": "/2014/05/19/tlsa-dane-record-von-hand-manuel-pruefen/",
  "publishedAt": "2026-05-25T10:07:36.000Z",
  "site": "https://www.kernel-error.de",
  "tags": [
    "DANE",
    "DNSSEC",
    "Email",
    "Hardening",
    "InfoSec",
    "MailServer",
    "Networking",
    "OpenSSL",
    "Postfix",
    "Security",
    "TLS",
    "TLSA",
    "Postfix mit DANE und DNSSEC absichern",
    "DNSSEC und DANE: TLS-Zertifikate mit TLSA-Records absichern",
    "Einfach melden."
  ],
  "textContent": "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.\n\n### Zertifikat holen\n\nVerbindung zum Mailserver aufbauen und das Zertifikat per STARTTLS abholen:\n\n\n    openssl s_client -starttls smtp -connect smtp.kernel-error.de:25 \\\n      -servername smtp.kernel-error.de 2>/dev/null | \\\n      openssl x509 -outform PEM > /tmp/server.crt\n\nDas Zertifikat liegt jetzt in `/tmp/server.crt`.\n\n### Hash berechnen\n\nWelchen Hash man berechnen muss, hängt vom TLSA-Record ab. Die drei Felder im Record bestimmen das:\n\n**Usage**|  0 = CA, 1 = End-Entity (Kette muss gültig sein), 2 = Trust Anchor, 3 = End-Entity (keine Kettenprüfung)\n---|---\n**Selector**|  0 = ganzes Zertifikat, 1 = nur Public Key (SPKI)\n**Matching Type**|  0 = exakter Vergleich, 1 = SHA-256, 2 = SHA-512\n\nAm 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:\n\n\n    dig _25._tcp.smtp.kernel-error.de TLSA +short\n\nDann den passenden Hash berechnen. Bei Selector 0 (ganzes Zertifikat) und Matching Type 1 (SHA-256):\n\n\n    # Selector 0 (Full Certificate), SHA-256\n    openssl x509 -in /tmp/server.crt -outform DER | openssl sha256\n    # Ausgabe: SHA2-256(stdin)= 94c8e1bd...\n\nBei Selector 1 (nur SPKI, Public Key) und SHA-256:\n\n\n    # Selector 1 (SPKI), SHA-256\n    openssl x509 -in /tmp/server.crt -noout -pubkey | \\\n      openssl pkey -pubin -outform DER | openssl sha256\n\nDen berechneten Hash mit dem Wert aus dem TLSA-Record vergleichen. Stimmen sie überein, ist der Record korrekt.\n\n### Schnelltest mit posttls-finger\n\nWer nicht alles von Hand machen will: `posttls-finger` (Teil von Postfix) prüft den kompletten DANE-Ablauf in einem Schritt:\n\n\n    posttls-finger -t30 -T180 -c -L verbose,summary kernel-error.de\n\nIn 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.\n\nWer 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.",
  "title": "TLSA- und DANE-Records manuell prüfen: Schritt für Schritt mit OpenSSL"
}