Cos'è un record TLSA
Scopri come i record TLSA abilitano DANE per l'autenticazione dei certificati, fornendo un'alternativa alla validazione CA tradizionale. Include esempi per la dashboard e l'API di DNScale.
Un record TLSA (Transport Layer Security Authentication) associa un certificato server TLS o una chiave pubblica a un nome di dominio, abilitando DANE (DNS-based Authentication of Named Entities). I record TLSA forniscono un'alternativa o un complemento alla validazione tradizionale delle Certificate Authority.
Come funzionano i record TLSA
I record TLSA specificano quale certificato o chiave un client dovrebbe aspettarsi quando si connette tramite TLS:
_443._tcp.example.com. 3600 TLSA 3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855Questo dice ai client: "Quando vi connettete a example.com sulla porta 443 tramite TCP, aspettatevi un certificato corrispondente a questo hash SHA-256."
Componenti del record
| Componente | Campo | Descrizione |
|---|---|---|
| Nome | _porta._protocollo.dominio | _443._tcp.example.com |
| Usage | Tipo di utilizzo del certificato | 0, 1, 2, o 3 |
| Selector | Cosa confrontare | 0 (certificato completo) o 1 (chiave pubblica) |
| Matching Type | Algoritmo di hash | 0 (esatto), 1 (SHA-256), 2 (SHA-512) |
| Certificate Data | Hash o certificato | Dati codificati in esadecimale |
Valori Usage
| Valore | Nome | Descrizione |
|---|---|---|
0 | PKIX-TA | Deve essere concatenato alla CA specificata + superare la validazione PKIX |
1 | PKIX-EE | Il certificato end-entity deve corrispondere + superare la validazione PKIX |
2 | DANE-TA | Deve essere concatenato al trust anchor specificato (senza PKIX) |
3 | DANE-EE | Il certificato end-entity deve corrispondere esattamente (senza PKIX) |
Valori Selector
| Valore | Nome | Descrizione |
|---|---|---|
0 | Cert | Confronta il certificato completo |
1 | SPKI | Confronta SubjectPublicKeyInfo (solo chiave pubblica) |
Valori Matching Type
| Valore | Nome | Descrizione |
|---|---|---|
0 | Full | Corrispondenza esatta (dati completi, non hash) |
1 | SHA-256 | Hash SHA-256 dei dati selezionati |
2 | SHA-512 | Hash SHA-512 dei dati selezionati |
Casi d'uso comuni
Web Server DANE-EE (Consigliato)
Validazione auto-firmata tramite DNS:
_443._tcp.example.com. 3600 TLSA 3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855Usage 3 + Selector 1 + SHA-256 è la configurazione più comune.
Server di posta (SMTP)
Consegna email sicura con 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...Server XMPP
_5222._tcp.xmpp.example.com. 3600 TLSA 3 1 1 def456...
_5269._tcp.xmpp.example.com. 3600 TLSA 3 1 1 def456...Certificati multipli (Rollover)
Durante il rinnovo del certificato:
_443._tcp.example.com. 3600 TLSA 3 1 1 oldcerthash...
_443._tcp.example.com. 3600 TLSA 3 1 1 newcerthash...Formato del record
| Campo | Descrizione | Esempio |
|---|---|---|
| Nome | _porta._protocollo.dominio | _443._tcp.example.com |
| Tipo | Tipo di record | TLSA |
| Usage | Utilizzo del certificato | 3 |
| Selector | Dati da confrontare | 1 |
| Matching Type | Tipo di hash | 1 |
| Certificate Data | Hash (esadecimale) | e3b0c44... |
| TTL | Time to live (secondi) | 3600 |
Generazione dei dati TLSA
Utilizzo di OpenSSL
Ottenere l'hash SHA-256 della chiave pubblica (selector=1, matching=1):
# Da file certificato
openssl x509 -in cert.pem -noout -pubkey | \
openssl pkey -pubin -outform DER | \
openssl dgst -sha256 -binary | \
xxd -p -c 256
# Da server live
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 256Ottenere l'hash SHA-256 del certificato completo (selector=0, matching=1):
openssl x509 -in cert.pem -outform DER | \
openssl dgst -sha256 -binary | \
xxd -p -c 256Utilizzo di ldns-dane
ldns-dane create example.com 443 3 1 1Aggiungere un record TLSA
Tramite la dashboard
- Naviga alla tua zona nella dashboard di DNScale
- Clicca su Add Record
- Configura il record:
- Name: Inserisci
_443._tcp(o porta/protocollo appropriato) - Type: Seleziona
TLSA - Usage: Seleziona il tipo di utilizzo del certificato (0-3)
- Selector: Scegli Certificato completo (0) o Chiave pubblica (1)
- Matching Type: Scegli SHA-256 (1) o SHA-512 (2)
- Certificate Data: Inserisci l'hash codificato in esadecimale
- TTL: Imposta la durata della cache (predefinito: 3600)
- Name: Inserisci
- Clicca su Create Record
Tramite l'API
Creare un record TLSA:
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
}'Creare TLSA per server di posta:
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
}'Risposta API:
{
"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
}
}
}Requisiti DANE
Affinché DANE funzioni, la tua zona deve:
- Essere firmata con DNSSEC - I record TLSA senza DNSSEC non forniscono alcun beneficio di sicurezza
- Avere record TLSA corretti - L'hash deve corrispondere al certificato/chiave effettivo
- Aggiornare i record durante la rotazione dei certificati - Aggiungi il nuovo hash prima di distribuire il nuovo certificato
Processo di rollover dei certificati
- Genera il nuovo certificato
- Aggiungi il record TLSA per il nuovo hash del certificato
- Attendi la propagazione DNS (almeno la durata del TTL)
- Distribuisci il nuovo certificato sul server
- Rimuovi il vecchio record TLSA
# Passo 2: Aggiungi il nuovo hash mantenendo il vecchio
_443._tcp.example.com. 3600 TLSA 3 1 1 oldhash...
_443._tcp.example.com. 3600 TLSA 3 1 1 newhash...
# Passo 5: Rimuovi il vecchio hash
_443._tcp.example.com. 3600 TLSA 3 1 1 newhash...Best practice
-
Usa DANE-EE (usage 3) - Il più semplice e comunemente distribuito
-
Usa selector 1 (SPKI) - Sopravvive al rinnovo del certificato se la chiave viene riutilizzata
-
Usa SHA-256 (matching type 1) - Standard e ampiamente supportato
-
Pubblica prima della distribuzione - Aggiungi i record TLSA prima di distribuire i nuovi certificati
-
Abilita prima DNSSEC - TLSA senza DNSSEC è insicuro
-
Mantieni record multipli durante il rollover - Previeni interruzioni del servizio
Test dei record TLSA
# Query del record TLSA
dig TLSA _443._tcp.example.com
# Verifica con ldns
ldns-dane verify example.com 443
# Strumenti online
# - https://dane.sys4.de/
# - https://internet.nl/Tipi di record correlati
- CAA - Autorizzazione dell'autorità di certificazione
- TXT - Verifica del dominio
- SSHFP - Fingerprint SSH (concetto simile)
Conclusione
I record TLSA abilitano DANE, fornendo una validazione dei certificati basata sul DNS che può integrare o sostituire la verifica CA tradizionale. Combinati con DNSSEC, i record TLSA offrono una forte protezione contro gli attacchi man-in-the-middle. L'interfaccia intuitiva di DNScale rende la configurazione dei record TLSA semplice, con campi dedicati per i parametri usage, selector e matching type.