Découvrez PostScale -- API e-mail pour l'envoi transactionnel, la réception et les adresses masquées. PostScale

    Qu'est-ce qu'un enregistrement TLSA

    Découvrez comment les enregistrements TLSA permettent DANE pour l'authentification des certificats, offrant une alternative à la validation traditionnelle par autorité de certification. Inclut des exemples pour le tableau de bord et l'API DNScale.

    Un enregistrement TLSA (Transport Layer Security Authentication) associe un certificat de serveur TLS ou une clé publique à un nom de domaine, permettant DANE (DNS-based Authentication of Named Entities). Les enregistrements TLSA offrent une alternative ou un complément à la validation traditionnelle par autorité de certification.

    Comment fonctionnent les enregistrements TLSA

    Les enregistrements TLSA spécifient quel certificat ou quelle clé un client doit attendre lors d'une connexion via TLS :

    _443._tcp.example.com.    3600    TLSA    3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

    Cela indique aux clients : « Lors de la connexion à example.com sur le port 443 via TCP, attendez un certificat correspondant à ce hash SHA-256. »

    Composants de l'enregistrement

    ComposantChampDescription
    Nom_port._protocole.domaine_443._tcp.example.com
    UsageType d'utilisation du certificat0, 1, 2 ou 3
    SélecteurÉlément à vérifier0 (certificat complet) ou 1 (clé publique)
    Type de correspondanceAlgorithme de hash0 (exact), 1 (SHA-256), 2 (SHA-512)
    Données du certificatHash ou certificatDonnées encodées en hexadécimal

    Valeurs d'usage

    ValeurNomDescription
    0PKIX-TADoit être chaîné à l'AC spécifiée + validation PKIX
    1PKIX-EELe certificat final doit correspondre + validation PKIX
    2DANE-TADoit être chaîné à l'ancre de confiance spécifiée (sans PKIX)
    3DANE-EELe certificat final doit correspondre exactement (sans PKIX)

    Valeurs du sélecteur

    ValeurNomDescription
    0CertCorrespondance sur le certificat complet
    1SPKICorrespondance sur SubjectPublicKeyInfo (clé publique uniquement)

    Valeurs du type de correspondance

    ValeurNomDescription
    0CompletCorrespondance exacte (données complètes, pas de hash)
    1SHA-256Hash SHA-256 des données sélectionnées
    2SHA-512Hash SHA-512 des données sélectionnées

    Cas d'utilisation courants

    Serveur web DANE-EE (recommandé)

    Validation auto-signée via DNS :

    _443._tcp.example.com.    3600    TLSA    3 1 1 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

    Usage 3 + Sélecteur 1 + SHA-256 est la configuration la plus courante.

    Serveur de messagerie (SMTP)

    Livraison sécurisée des e-mails avec 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...

    Serveur XMPP

    _5222._tcp.xmpp.example.com.    3600    TLSA    3 1 1 def456...
    _5269._tcp.xmpp.example.com.    3600    TLSA    3 1 1 def456...

    Certificats multiples (renouvellement)

    Pendant le renouvellement du certificat :

    _443._tcp.example.com.    3600    TLSA    3 1 1 oldcerthash...
    _443._tcp.example.com.    3600    TLSA    3 1 1 newcerthash...

    Format de l'enregistrement

    ChampDescriptionExemple
    Nom_port._protocole.domaine_443._tcp.example.com
    TypeType d'enregistrementTLSA
    UsageUtilisation du certificat3
    SélecteurDonnées à vérifier1
    Type de correspondanceType de hash1
    Données du certificatHash (hex)e3b0c44...
    TTLDurée de vie (secondes)3600

    Générer les données TLSA

    Avec OpenSSL

    Obtenir le hash SHA-256 de la clé publique (sélecteur=1, correspondance=1) :

    # Depuis un fichier de certificat
    openssl x509 -in cert.pem -noout -pubkey | \
      openssl pkey -pubin -outform DER | \
      openssl dgst -sha256 -binary | \
      xxd -p -c 256
     
    # Depuis un serveur en ligne
    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

    Obtenir le hash SHA-256 du certificat complet (sélecteur=0, correspondance=1) :

    openssl x509 -in cert.pem -outform DER | \
      openssl dgst -sha256 -binary | \
      xxd -p -c 256

    Avec ldns-dane

    ldns-dane create example.com 443 3 1 1

    Ajouter un enregistrement TLSA

    Via le tableau de bord

    1. Accédez à votre zone dans le tableau de bord DNScale
    2. Cliquez sur Add Record
    3. Configurez l'enregistrement :
      • Name : Saisissez _443._tcp (ou le port/protocole approprié)
      • Type : Sélectionnez TLSA
      • Usage : Sélectionnez le type d'utilisation du certificat (0-3)
      • Selector : Choisissez Certificat complet (0) ou Clé publique (1)
      • Matching Type : Choisissez SHA-256 (1) ou SHA-512 (2)
      • Certificate Data : Saisissez le hash encodé en hexadécimal
      • TTL : Définissez la durée de cache (par défaut : 3600)
    4. Cliquez sur Create Record

    Via l'API

    Créer un enregistrement 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
      }'

    Créer un TLSA pour un serveur de messagerie :

    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
      }'

    Réponse de l'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
        }
      }
    }

    Prérequis DANE

    Pour que DANE fonctionne, votre zone doit :

    1. Être signée DNSSEC - Les enregistrements TLSA sans DNSSEC n'apportent aucun bénéfice de sécurité
    2. Avoir des enregistrements TLSA corrects - Le hash doit correspondre au certificat/clé réel
    3. Mettre à jour les enregistrements lors de la rotation des certificats - Ajoutez le nouveau hash avant de déployer le nouveau certificat

    Processus de renouvellement de certificat

    1. Générer le nouveau certificat
    2. Ajouter l'enregistrement TLSA pour le hash du nouveau certificat
    3. Attendre la propagation DNS (au moins la durée du TTL)
    4. Déployer le nouveau certificat sur le serveur
    5. Supprimer l'ancien enregistrement TLSA
    # Étape 2 : Ajouter le nouveau hash tout en conservant l'ancien
    _443._tcp.example.com.    3600    TLSA    3 1 1 oldhash...
    _443._tcp.example.com.    3600    TLSA    3 1 1 newhash...
     
    # Étape 5 : Supprimer l'ancien hash
    _443._tcp.example.com.    3600    TLSA    3 1 1 newhash...

    Bonnes pratiques

    1. Utilisez DANE-EE (usage 3) - Le plus simple et le plus couramment déployé

    2. Utilisez le sélecteur 1 (SPKI) - Résiste au renouvellement de certificat si la clé est réutilisée

    3. Utilisez SHA-256 (type de correspondance 1) - Standard et largement supporté

    4. Publiez avant le déploiement - Ajoutez les enregistrements TLSA avant de déployer les nouveaux certificats

    5. Activez DNSSEC d'abord - TLSA sans DNSSEC est non sécurisé

    6. Conservez plusieurs enregistrements pendant le renouvellement - Évitez les interruptions de service

    Tester les enregistrements TLSA

    # Requête de l'enregistrement TLSA
    dig TLSA _443._tcp.example.com
     
    # Vérification avec ldns
    ldns-dane verify example.com 443
     
    # Outils en ligne
    # - https://dane.sys4.de/
    # - https://internet.nl/

    Types d'enregistrements associés

    • CAA - Autorisation d'autorité de certification
    • TXT - Vérification de domaine
    • SSHFP - Empreintes SSH (concept similaire)

    Conclusion

    Les enregistrements TLSA permettent DANE, fournissant une validation de certificat basée sur le DNS qui peut compléter ou remplacer la vérification traditionnelle par autorité de certification. Combinés avec DNSSEC, les enregistrements TLSA offrent une protection robuste contre les attaques de type man-in-the-middle. L'interface intuitive de DNScale facilite la configuration des enregistrements TLSA, avec des champs dédiés pour les paramètres d'usage, de sélecteur et de type de correspondance.