À partir de 2011, avec l’augmentation des attaques sur les autorités de certification X.509 [1], le système de vérification hiérarchique des certificats (PKIX – Public Key Infrastructure using X.509) utilisé dans TLS (Transport Layer Security) montre quelques signes de faiblesse. Un second système de vérification utilisant DNS se met alors en place, avec le protocole DANE (DNS-Based Authentication of Named Entities) [2]. Je vous propose donc de voir comment mettre en œuvre tout cela.
Le protocole TLS (Transport Layer Security) utilise des clés asymétriques (clé publique et privée) pour mettre en place une communication chiffrée. Afin qu’un client puisse vérifier l’identité d’un serveur, ce dernier envoie sa clé publique sous la forme d’un certificat X.509 (RFC 5280) signé numériquement par une autorité de certification. J’expliquerai ce terme après avoir détaillé le contenu d’un certificat classique.
Un certificat contient plusieurs informations (voir ci-dessous le certificat de Google) : le signataire (le nom de l’autorité ayant signé le certificat), les dates de validité, le sujet décrivant le nom du serveur ou du service utilisé, la clé publique, les utilisations possibles de la clé et les autres noms DNS du serveur, etc.
$ openssl x509 -in wwwgooglecom.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 5186358894832547828 (0x47f9a5efb42e77f4)
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première