Vi presentiamo PostScale -- API email per invii transazionali, ricezione e indirizzi mascherati. PostScale

    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 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

    Questo 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

    ComponenteCampoDescrizione
    Nome_porta._protocollo.dominio_443._tcp.example.com
    UsageTipo di utilizzo del certificato0, 1, 2, o 3
    SelectorCosa confrontare0 (certificato completo) o 1 (chiave pubblica)
    Matching TypeAlgoritmo di hash0 (esatto), 1 (SHA-256), 2 (SHA-512)
    Certificate DataHash o certificatoDati codificati in esadecimale

    Valori Usage

    ValoreNomeDescrizione
    0PKIX-TADeve essere concatenato alla CA specificata + superare la validazione PKIX
    1PKIX-EEIl certificato end-entity deve corrispondere + superare la validazione PKIX
    2DANE-TADeve essere concatenato al trust anchor specificato (senza PKIX)
    3DANE-EEIl certificato end-entity deve corrispondere esattamente (senza PKIX)

    Valori Selector

    ValoreNomeDescrizione
    0CertConfronta il certificato completo
    1SPKIConfronta SubjectPublicKeyInfo (solo chiave pubblica)

    Valori Matching Type

    ValoreNomeDescrizione
    0FullCorrispondenza esatta (dati completi, non hash)
    1SHA-256Hash SHA-256 dei dati selezionati
    2SHA-512Hash 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 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

    Usage 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

    CampoDescrizioneEsempio
    Nome_porta._protocollo.dominio_443._tcp.example.com
    TipoTipo di recordTLSA
    UsageUtilizzo del certificato3
    SelectorDati da confrontare1
    Matching TypeTipo di hash1
    Certificate DataHash (esadecimale)e3b0c44...
    TTLTime 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 256

    Ottenere 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 256

    Utilizzo di ldns-dane

    ldns-dane create example.com 443 3 1 1

    Aggiungere un record TLSA

    Tramite la dashboard

    1. Naviga alla tua zona nella dashboard di DNScale
    2. Clicca su Add Record
    3. 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)
    4. 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:

    1. Essere firmata con DNSSEC - I record TLSA senza DNSSEC non forniscono alcun beneficio di sicurezza
    2. Avere record TLSA corretti - L'hash deve corrispondere al certificato/chiave effettivo
    3. Aggiornare i record durante la rotazione dei certificati - Aggiungi il nuovo hash prima di distribuire il nuovo certificato

    Processo di rollover dei certificati

    1. Genera il nuovo certificato
    2. Aggiungi il record TLSA per il nuovo hash del certificato
    3. Attendi la propagazione DNS (almeno la durata del TTL)
    4. Distribuisci il nuovo certificato sul server
    5. 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

    1. Usa DANE-EE (usage 3) - Il più semplice e comunemente distribuito

    2. Usa selector 1 (SPKI) - Sopravvive al rinnovo del certificato se la chiave viene riutilizzata

    3. Usa SHA-256 (matching type 1) - Standard e ampiamente supportato

    4. Pubblica prima della distribuzione - Aggiungi i record TLSA prima di distribuire i nuovi certificati

    5. Abilita prima DNSSEC - TLSA senza DNSSEC è insicuro

    6. 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.