Was ist ein TLSA-Eintrag
Erfahren Sie, wie TLSA-Einträge DANE für die Zertifikatsauthentifizierung ermöglichen und eine Alternative zur herkömmlichen CA-Validierung bieten. Mit Beispielen für das DNScale-Dashboard und die API.
Ein TLSA-Eintrag (Transport Layer Security Authentication) verknüpft ein TLS-Serverzertifikat oder einen öffentlichen Schlüssel mit einem Domainnamen und ermöglicht so DANE (DNS-based Authentication of Named Entities). TLSA-Einträge bieten eine Alternative oder Ergänzung zur herkömmlichen Validierung durch Zertifizierungsstellen.
Wie TLSA-Einträge funktionieren
TLSA-Einträge legen fest, welches Zertifikat oder welchen Schlüssel ein Client bei einer TLS-Verbindung erwarten soll:
_443._tcp.example.com. 3600 TLSA 3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855Dies teilt Clients mit: „Wenn Sie sich über TCP auf Port 443 mit example.com verbinden, erwarten Sie ein Zertifikat, das diesem SHA-256-Hash entspricht."
Eintragskomponenten
| Komponente | Feld | Beschreibung |
|---|---|---|
| Name | _port._protocol.domain | _443._tcp.example.com |
| Usage | Zertifikatsverwendungstyp | 0, 1, 2 oder 3 |
| Selector | Was abgeglichen wird | 0 (vollständiges Zertifikat) oder 1 (öffentlicher Schlüssel) |
| Matching Type | Hash-Algorithmus | 0 (exakt), 1 (SHA-256), 2 (SHA-512) |
| Certificate Data | Hash oder Zertifikat | Hex-kodierte Daten |
Usage-Werte
| Wert | Name | Beschreibung |
|---|---|---|
0 | PKIX-TA | Muss zur angegebenen CA ketten + PKIX-Validierung bestehen |
1 | PKIX-EE | End-Entity-Zertifikat muss übereinstimmen + PKIX-Validierung bestehen |
2 | DANE-TA | Muss zum angegebenen Trust Anchor ketten (ohne PKIX) |
3 | DANE-EE | End-Entity-Zertifikat muss exakt übereinstimmen (ohne PKIX) |
Selector-Werte
| Wert | Name | Beschreibung |
|---|---|---|
0 | Cert | Vollständiges Zertifikat abgleichen |
1 | SPKI | SubjectPublicKeyInfo abgleichen (nur öffentlicher Schlüssel) |
Matching-Type-Werte
| Wert | Name | Beschreibung |
|---|---|---|
0 | Full | Exakte Übereinstimmung (vollständige Daten, kein Hash) |
1 | SHA-256 | SHA-256-Hash der ausgewählten Daten |
2 | SHA-512 | SHA-512-Hash der ausgewählten Daten |
Häufige Anwendungsfälle
Webserver DANE-EE (empfohlen)
Selbstsignierte Validierung über DNS:
_443._tcp.example.com. 3600 TLSA 3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855Usage 3 + Selector 1 + SHA-256 ist die gebräuchlichste Konfiguration.
Mailserver (SMTP)
Sichere E-Mail-Zustellung mit DANE:
_25._tcp.mail.example.com. 3600 TLSA 3 1 1 abc123...
_465._tcp.mail.example.com. 3600 TLSA 3 1 1 abc123...
_587._tcp.mail.example.com. 3600 TLSA 3 1 1 abc123...XMPP-Server
_5222._tcp.xmpp.example.com. 3600 TLSA 3 1 1 def456...
_5269._tcp.xmpp.example.com. 3600 TLSA 3 1 1 def456...Mehrere Zertifikate (Rollover)
Während der Zertifikatserneuerung:
_443._tcp.example.com. 3600 TLSA 3 1 1 alterzertifikathash...
_443._tcp.example.com. 3600 TLSA 3 1 1 neuerzertifikathash...Eintragsformat
| Feld | Beschreibung | Beispiel |
|---|---|---|
| Name | _port._protocol.domain | _443._tcp.example.com |
| Typ | Eintragstyp | TLSA |
| Usage | Zertifikatsverwendung | 3 |
| Selector | Abzugleichende Daten | 1 |
| Matching Type | Hash-Typ | 1 |
| Certificate Data | Hash (hex) | e3b0c44... |
| TTL | Gültigkeitsdauer (Sekunden) | 3600 |
TLSA-Daten generieren
Mit OpenSSL
SHA-256-Hash des öffentlichen Schlüssels ermitteln (selector=1, matching=1):
# Aus Zertifikatsdatei
openssl x509 -in cert.pem -noout -pubkey | \
openssl pkey -pubin -outform DER | \
openssl dgst -sha256 -binary | \
xxd -p -c 256
# Vom Live-Server
echo | openssl s_client -connect example.com:443 2>/dev/null | \
openssl x509 -noout -pubkey | \
openssl pkey -pubin -outform DER | \
openssl dgst -sha256 -binary | \
xxd -p -c 256SHA-256-Hash des vollständigen Zertifikats ermitteln (selector=0, matching=1):
openssl x509 -in cert.pem -outform DER | \
openssl dgst -sha256 -binary | \
xxd -p -c 256Mit ldns-dane
ldns-dane create example.com 443 3 1 1TLSA-Eintrag hinzufügen
Über das Dashboard
- Navigieren Sie zu Ihrer Zone im DNScale-Dashboard
- Klicken Sie auf Add Record
- Konfigurieren Sie den Eintrag:
- Name: Geben Sie
_443._tcpein (oder den entsprechenden Port/das Protokoll) - Type: Wählen Sie
TLSA - Usage: Wählen Sie den Zertifikatsverwendungstyp (0-3)
- Selector: Wählen Sie Vollständiges Zertifikat (0) oder Öffentlicher Schlüssel (1)
- Matching Type: Wählen Sie SHA-256 (1) oder SHA-512 (2)
- Certificate Data: Geben Sie den hex-kodierten Hash ein
- TTL: Setzen Sie die Cache-Dauer (Standard: 3600)
- Name: Geben Sie
- Klicken Sie auf Create Record
Über die API
TLSA-Eintrag erstellen:
curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "_443._tcp",
"type": "TLSA",
"content": "3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ttl": 3600
}'TLSA für Mailserver erstellen:
curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "_25._tcp.mail",
"type": "TLSA",
"content": "3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ttl": 3600
}'API-Antwort:
{
"status": "success",
"data": {
"message": "Record created successfully",
"record": {
"id": "encoded-record-id",
"name": "_443._tcp.example.com.",
"type": "TLSA",
"content": "3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ttl": 3600,
"disabled": false
}
}
}DANE-Voraussetzungen
Damit DANE funktioniert, muss Ihre Zone:
- DNSSEC-signiert sein - TLSA-Einträge ohne DNSSEC bieten keinen Sicherheitsvorteil
- Korrekte TLSA-Einträge haben - Der Hash muss mit dem tatsächlichen Zertifikat/Schlüssel übereinstimmen
- Einträge bei Zertifikatswechsel aktualisieren - Neuen Hash vor der Bereitstellung des neuen Zertifikats hinzufügen
Prozess für den Zertifikatswechsel
- Neues Zertifikat generieren
- TLSA-Eintrag für den neuen Zertifikats-Hash hinzufügen
- Auf DNS-Propagierung warten (mindestens die TTL-Dauer)
- Neues Zertifikat auf dem Server bereitstellen
- Alten TLSA-Eintrag entfernen
# Schritt 2: Neuen Hash hinzufügen, alten beibehalten
_443._tcp.example.com. 3600 TLSA 3 1 1 alterhash...
_443._tcp.example.com. 3600 TLSA 3 1 1 neuerhash...
# Schritt 5: Alten Hash entfernen
_443._tcp.example.com. 3600 TLSA 3 1 1 neuerhash...Best Practices
-
DANE-EE (Usage 3) verwenden - Am einfachsten und am häufigsten eingesetzt
-
Selector 1 (SPKI) verwenden - Überlebt die Zertifikatserneuerung, wenn der Schlüssel wiederverwendet wird
-
SHA-256 (Matching Type 1) verwenden - Standard und weitgehend unterstützt
-
Vor der Bereitstellung veröffentlichen - TLSA-Einträge vor der Bereitstellung neuer Zertifikate hinzufügen
-
Zuerst DNSSEC aktivieren - TLSA ohne DNSSEC ist unsicher
-
Mehrere Einträge während des Rollovers beibehalten - Dienstunterbrechungen vermeiden
TLSA-Einträge testen
# TLSA-Eintrag abfragen
dig TLSA _443._tcp.example.com
# Mit ldns verifizieren
ldns-dane verify example.com 443
# Online-Tools
# - https://dane.sys4.de/
# - https://internet.nl/Verwandte Eintragstypen
- CAA - Zertifizierungsstellen-Autorisierung
- TXT - Domain-Verifizierung
- SSHFP - SSH-Fingerprints (ähnliches Konzept)
Fazit
TLSA-Einträge ermöglichen DANE und bieten eine DNS-basierte Zertifikatsvalidierung, die die herkömmliche CA-Überprüfung ergänzen oder ersetzen kann. In Kombination mit DNSSEC bieten TLSA-Einträge einen starken Schutz gegen Man-in-the-Middle-Angriffe. Die intuitive Oberfläche von DNScale macht die Konfiguration von TLSA-Einträgen einfach, mit dedizierten Feldern für Usage-, Selector- und Matching-Type-Parameter.