Wat is een TLSA-record
Leer hoe TLSA-records DANE mogelijk maken voor certificaatverificatie, als alternatief voor traditionele CA-validatie. Inclusief voorbeelden voor het DNScale-dashboard en de API.
Een TLSA (Transport Layer Security Authentication) record koppelt een TLS-servercertificaat of publieke sleutel aan een domeinnaam, waardoor DANE (DNS-based Authentication of Named Entities) mogelijk wordt. TLSA-records bieden een alternatief of aanvulling op traditionele Certificate Authority-validatie.
Hoe TLSA-records werken
TLSA-records specificeren welk certificaat of welke sleutel een client kan verwachten bij een TLS-verbinding:
_443._tcp.example.com. 3600 TLSA 3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855Dit vertelt clients: "Wanneer je verbinding maakt met example.com op poort 443 via TCP, verwacht dan een certificaat dat overeenkomt met deze SHA-256 hash."
Recordcomponenten
| Component | Veld | Beschrijving |
|---|---|---|
| Naam | _poort._protocol.domein | _443._tcp.example.com |
| Gebruik | Certificaatgebruikstype | 0, 1, 2 of 3 |
| Selector | Wat te matchen | 0 (volledig cert.) of 1 (publieke sleutel) |
| Matchtype | Hash-algoritme | 0 (exact), 1 (SHA-256), 2 (SHA-512) |
| Certificaatgegevens | Hash of certificaat | Hex-gecodeerde gegevens |
Gebruikswaarden
| Waarde | Naam | Beschrijving |
|---|---|---|
0 | PKIX-TA | Moet koppelen aan opgegeven CA + PKIX-validatie doorstaan |
1 | PKIX-EE | Eindentiteitscertificaat moet overeenkomen + PKIX-validatie doorstaan |
2 | DANE-TA | Moet koppelen aan opgegeven trust anchor (geen PKIX) |
3 | DANE-EE | Eindentiteitscertificaat moet exact overeenkomen (geen PKIX) |
Selectorwaarden
| Waarde | Naam | Beschrijving |
|---|---|---|
0 | Cert | Match volledig certificaat |
1 | SPKI | Match SubjectPublicKeyInfo (alleen publieke sleutel) |
Matchtypewaarden
| Waarde | Naam | Beschrijving |
|---|---|---|
0 | Volledig | Exacte match (volledige gegevens, geen hash) |
1 | SHA-256 | SHA-256 hash van geselecteerde gegevens |
2 | SHA-512 | SHA-512 hash van geselecteerde gegevens |
Veelvoorkomende toepassingen
Webserver DANE-EE (aanbevolen)
Zelfondertekende validatie via DNS:
_443._tcp.example.com. 3600 TLSA 3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855Gebruik 3 + Selector 1 + SHA-256 is de meest gebruikelijke configuratie.
Mailserver (SMTP)
Beveiligde e-mailbezorging met 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...Meerdere certificaten (rollover)
Tijdens certificaatvernieuwing:
_443._tcp.example.com. 3600 TLSA 3 1 1 oudecerthash...
_443._tcp.example.com. 3600 TLSA 3 1 1 nieuwecerthash...Recordformaat
| Veld | Beschrijving | Voorbeeld |
|---|---|---|
| Naam | _poort._protocol.domein | _443._tcp.example.com |
| Type | Recordtype | TLSA |
| Gebruik | Certificaatgebruik | 3 |
| Selector | Te matchen gegevens | 1 |
| Matchtype | Hashtype | 1 |
| Certificaatgegevens | Hash (hex) | e3b0c44... |
| TTL | Time to live (seconden) | 3600 |
TLSA-gegevens genereren
Met OpenSSL
SHA-256 hash van publieke sleutel ophalen (selector=1, matching=1):
# Vanuit certificaatbestand
openssl x509 -in cert.pem -noout -pubkey | \
openssl pkey -pubin -outform DER | \
openssl dgst -sha256 -binary | \
xxd -p -c 256
# Van 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 van volledig certificaat ophalen (selector=0, matching=1):
openssl x509 -in cert.pem -outform DER | \
openssl dgst -sha256 -binary | \
xxd -p -c 256Met ldns-dane
ldns-dane create example.com 443 3 1 1Een TLSA-record toevoegen
Via het dashboard
- Navigeer naar je zone in het DNScale-dashboard
- Klik op Add Record
- Configureer het record:
- Name: Voer
_443._tcpin (of de juiste poort/protocol) - Type: Selecteer
TLSA - Usage: Selecteer het certificaatgebruik (0-3)
- Selector: Kies Volledig cert. (0) of Publieke sleutel (1)
- Matching Type: Kies SHA-256 (1) of SHA-512 (2)
- Certificate Data: Voer de hex-gecodeerde hash in
- TTL: Stel de cacheduur in (standaard: 3600)
- Name: Voer
- Klik op Create Record
Via de API
Een TLSA-record aanmaken:
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 aanmaken voor mailserver:
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-respons:
{
"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-vereisten
Om DANE te laten werken, moet je zone:
- DNSSEC-ondertekend zijn - TLSA-records zonder DNSSEC bieden geen beveiligingsvoordeel
- Correcte TLSA-records hebben - De hash moet overeenkomen met het daadwerkelijke certificaat/de sleutel
- Records bijwerken tijdens certificaatrotatie - Voeg de nieuwe hash toe v贸贸r het implementeren van het nieuwe certificaat
Certificaat-rolloverproces
- Genereer een nieuw certificaat
- Voeg een TLSA-record toe voor de nieuwe certificaathash
- Wacht op DNS-propagatie (minimaal de TTL-duur)
- Implementeer het nieuwe certificaat op de server
- Verwijder het oude TLSA-record
# Stap 2: Voeg nieuwe hash toe terwijl de oude behouden blijft
_443._tcp.example.com. 3600 TLSA 3 1 1 oudehash...
_443._tcp.example.com. 3600 TLSA 3 1 1 nieuwehash...
# Stap 5: Verwijder de oude hash
_443._tcp.example.com. 3600 TLSA 3 1 1 nieuwehash...Best practices
-
Gebruik DANE-EE (gebruik 3) - Eenvoudigst en meest toegepast
-
Gebruik selector 1 (SPKI) - Overleeft certificaatvernieuwing als de sleutel wordt hergebruikt
-
Gebruik SHA-256 (matchtype 1) - Standaard en breed ondersteund
-
Publiceer v贸贸r implementatie - Voeg TLSA-records toe v贸贸r het implementeren van nieuwe certificaten
-
Schakel eerst DNSSEC in - TLSA zonder DNSSEC is onveilig
-
Bewaar meerdere records tijdens rollover - Voorkom serviceonderbreking
TLSA-records testen
# Query TLSA-record
dig TLSA _443._tcp.example.com
# Verifieer met ldns
ldns-dane verify example.com 443
# Online tools
# - https://dane.sys4.de/
# - https://internet.nl/Gerelateerde recordtypen
- CAA - Certificate Authority-autorisatie
- TXT - Domeinverificatie
- SSHFP - SSH-fingerprints (vergelijkbaar concept)
Conclusie
TLSA-records maken DANE mogelijk en bieden DNS-gebaseerde certificaatvalidatie die traditionele CA-verificatie kan aanvullen of vervangen. In combinatie met DNSSEC bieden TLSA-records sterke bescherming tegen man-in-the-middle-aanvallen. De intu茂tieve interface van DNScale maakt het configureren van TLSA-records eenvoudig, met speciale velden voor gebruik, selector en matchtypeparameters.