TLSA / DANE für mail.example.com mit TXT-Fallback

Ziel dieses Howtos: Die Mail-Ports von mail.example.com mit TLSA / DANE absichern – auch dann, wenn der DNS-Provider keine eigenen TLSA-Records unterstützt und nur TXT-Einträge erlaubt.

1. Überblick: Was macht TLSA / DANE?

Mit TLSA/DANE verknüpfst du im DNS das TLS-Zertifikat deines Mailservers direkt mit einem Fingerprint. Dadurch können DANE-fähige Mailserver prüfen, ob das Zertifikat von mail.example.com wirklich zu deiner Domain gehört und nicht unterwegs ausgetauscht wurde. In Kombination mit DNSSEC wird so eine sehr robuste Transportverschlüsselung erreicht.

In diesem Beispiel sichern wir folgende Ports von mail.example.com ab:

  • 25 – SMTP (Server-zu-Server)
  • 110 – POP3
  • 465 – SMTPS (SMTP über SSL)
  • 587 – Submission (SMTP mit STARTTLS)
  • 993 – IMAPS
  • 995 – POP3S

Beispiel-Fingerprint (Demo-Wert):

Usage / Selector / Matching-Type: 3 0 1
SHA-256-Fingerprint:
0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

Bedeutung der Parameter:

  • 3 = Usage: DANE-EE (End-Entity-Zertifikat)
  • 0 = Selector: komplettes Zertifikat
  • 1 = Matching-Type: SHA-256-Hash des Zertifikats

2. Struktur eines TLSA-Records

Allgemeiner Aufbau eines TLSA-Records:

_<port>._tcp.<hostname>.  IN  TLSA  <usage> <selector> <matching-type> <fingerprint>

Für mail.example.com und Port 25 mit unserem Beispiel-Fingerprint würde ein TLSA-Record so aussehen:

_25._tcp.mail.example.com.  IN  TLSA  3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

3. Variante A: „Echte“ TLSA-Records (falls dein DNS TLSA unterstützt)

Wenn dein DNS-Provider TLSA als eigenen Record-Typ unterstützt (z. B. BIND, PowerDNS, viele Managed-DNS-Anbieter), kannst du die folgenden Records mit einer Beispiel-TTL von 3600 Sekunden (1 Stunde) verwenden:

_25._tcp.mail.example.com.   3600  IN  TLSA  3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
_110._tcp.mail.example.com.  3600  IN  TLSA  3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
_465._tcp.mail.example.com.  3600  IN  TLSA  3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
_587._tcp.mail.example.com.  3600  IN  TLSA  3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
_993._tcp.mail.example.com.  3600  IN  TLSA  3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
_995._tcp.mail.example.com.  3600  IN  TLSA  3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

Parameter-Erklärung:

  • 3600 = TTL in Sekunden (z. B. 3600 = 1h, 86400 = 24h)
  • IN = Internet-Klasse
  • TLSA = Record-Typ
  • 3 0 1 + Fingerprint = TLSA-Payload

4. Variante B: TLSA als TXT-Records mit _tlsa.-Prefix (wenn nur TXT erlaubt ist)

Viele klassische Webhoster bieten keine eigenen TLSA-Record-Typen an, erlauben aber TXT-Einträge. In diesem Fall kannst du TLSA über spezielle TXT-Records mit dem Prefix _tlsa. abbilden.

Allgemeine Struktur:

_tlsa._<port>._tcp.<hostname>.  IN  TXT  "v=TLSA <usage> <selector> <matching-type> <fingerprint>"

Für unser Beispiel (mail.example.com) sieht das so aus:

_tlsa._25._tcp.mail.example.com.   3600  IN  TXT  "v=TLSA 3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
_ tlsa._110._tcp.mail.example.com. 3600  IN  TXT  "v=TLSA 3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
_tlsa._465._tcp.mail.example.com.  3600  IN  TXT  "v=TLSA 3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
_tlsa._587._tcp.mail.example.com.  3600  IN  TXT  "v=TLSA 3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
_tlsa._993._tcp.mail.example.com.  3600  IN  TXT  "v=TLSA 3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
_tlsa._995._tcp.mail.example.com.  3600  IN  TXT  "v=TLSA 3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"

Typische Eingabe im DNS-Webinterface deines Hosters (Beispiel für Port 465):

Feld Beispielwert
Hostname / Name _tlsa._465._tcp.mail.example.com
Typ TXT
TTL 3600 (oder nach Wunsch)
Wert / Inhalt "v=TLSA 3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"

Diese Struktur wiederholst du für alle Ports (25, 110, 465, 587, 993, 995), jeweils mit angepasstem Hostnamen (_tlsa._<port>._tcp.mail.example.com).

5. Fertige TXT-Datei mit allen TLSA-TXT-Records

Wenn du eine komplette Textdatei vorbereiten möchtest, die du z. B. intern dokumentierst oder in ein Zonefile importierst, kannst du den folgenden Inhalt als tlsa-eintraege.txt speichern:

_tlsa._25._tcp.mail.example.com.   3600  IN  TXT  "v=TLSA 3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
_tlsa._110._tcp.mail.example.com.  3600  IN  TXT  "v=TLSA 3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
_tlsa._465._tcp.mail.example.com.  3600  IN  TXT  "v=TLSA 3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
_tlsa._587._tcp.mail.example.com.  3600  IN  TXT  "v=TLSA 3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
_tlsa._993._tcp.mail.example.com.  3600  IN  TXT  "v=TLSA 3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
_tlsa._995._tcp.mail.example.com.  3600  IN  TXT  "v=TLSA 3 0 1 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"

Diese Datei kannst du als Referenz in deinem internen Doku-System ablegen oder bei Bedarf in dein DNS-Setup übernehmen.

6. TLSA / TXT-Einträge testen

6.1 Test mit dig (Kommandozeile)

Für echte TLSA-Records:

dig TLSA _465._tcp.mail.example.com +short

Für TXT-basierte TLSA-Fallback-Records:

dig TXT _tlsa._465._tcp.mail.example.com +short

Die Ausgabe sollte den vollständigen TLSA-Inhalt bzw. den TXT-Wert mit "v=TLSA 3 0 1 ..." enthalten.

6.2 Online-Checker

Zusätzlich kannst du Online-DANE-Checker verwenden, indem du einfach mail.example.com angibst und die Ports 25, 465, 587, 993 und 995 testen lässt. Achte darauf, dass:

  • die TLSA-/TXT-Einträge korrekt aufgelöst werden
  • die Zertifikatsprüfung als „DANE OK“ / „DANE validated“ markiert wird

7. Best Practices

  • Aktiviere nach Möglichkeit DNSSEC für example.com.
  • Dokumentiere den aktuell verwendeten Zertifikats-Fingerprint und seine Laufzeit.
  • Bei Zertifikatswechsel: immer zuerst den neuen Fingerprint in allen TLSA-/TXT-Einträgen aktualisieren, dann das Zertifikat austauschen.
  • TTL anfangs eher niedrig (z. B. 3600), später ggf. auf 86400 erhöhen, wenn alles stabil läuft.
Cette réponse était-elle pertinente? 1 Utilisateurs l'ont trouvée utile (1 Votes)