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 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855Cela 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
| Composant | Champ | Description |
|---|---|---|
| Nom | _port._protocole.domaine | _443._tcp.example.com |
| Usage | Type d'utilisation du certificat | 0, 1, 2 ou 3 |
| Sélecteur | Élément à vérifier | 0 (certificat complet) ou 1 (clé publique) |
| Type de correspondance | Algorithme de hash | 0 (exact), 1 (SHA-256), 2 (SHA-512) |
| Données du certificat | Hash ou certificat | Données encodées en hexadécimal |
Valeurs d'usage
| Valeur | Nom | Description |
|---|---|---|
0 | PKIX-TA | Doit être chaîné à l'AC spécifiée + validation PKIX |
1 | PKIX-EE | Le certificat final doit correspondre + validation PKIX |
2 | DANE-TA | Doit être chaîné à l'ancre de confiance spécifiée (sans PKIX) |
3 | DANE-EE | Le certificat final doit correspondre exactement (sans PKIX) |
Valeurs du sélecteur
| Valeur | Nom | Description |
|---|---|---|
0 | Cert | Correspondance sur le certificat complet |
1 | SPKI | Correspondance sur SubjectPublicKeyInfo (clé publique uniquement) |
Valeurs du type de correspondance
| Valeur | Nom | Description |
|---|---|---|
0 | Complet | Correspondance exacte (données complètes, pas de hash) |
1 | SHA-256 | Hash SHA-256 des données sélectionnées |
2 | SHA-512 | Hash 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 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855Usage 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
| Champ | Description | Exemple |
|---|---|---|
| Nom | _port._protocole.domaine | _443._tcp.example.com |
| Type | Type d'enregistrement | TLSA |
| Usage | Utilisation du certificat | 3 |
| Sélecteur | Données à vérifier | 1 |
| Type de correspondance | Type de hash | 1 |
| Données du certificat | Hash (hex) | e3b0c44... |
| TTL | Duré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 256Obtenir 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 256Avec ldns-dane
ldns-dane create example.com 443 3 1 1Ajouter un enregistrement TLSA
Via le tableau de bord
- Accédez à votre zone dans le tableau de bord DNScale
- Cliquez sur Add Record
- 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)
- Name : Saisissez
- 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 :
- Être signée DNSSEC - Les enregistrements TLSA sans DNSSEC n'apportent aucun bénéfice de sécurité
- Avoir des enregistrements TLSA corrects - Le hash doit correspondre au certificat/clé réel
- 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
- Générer le nouveau certificat
- Ajouter l'enregistrement TLSA pour le hash du nouveau certificat
- Attendre la propagation DNS (au moins la durée du TTL)
- Déployer le nouveau certificat sur le serveur
- 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
-
Utilisez DANE-EE (usage 3) - Le plus simple et le plus couramment déployé
-
Utilisez le sélecteur 1 (SPKI) - Résiste au renouvellement de certificat si la clé est réutilisée
-
Utilisez SHA-256 (type de correspondance 1) - Standard et largement supporté
-
Publiez avant le déploiement - Ajoutez les enregistrements TLSA avant de déployer les nouveaux certificats
-
Activez DNSSEC d'abord - TLSA sans DNSSEC est non sécurisé
-
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.