CAA : Se protéger contre les générations de certificats malicieuses

À l’heure actuelle, nous pouvons constater un nombre grandissant d’alertes de sécurité concernant des certificats SSL émis de manière malicieuse. Cet effet est, entre autres, directement lié à l’arrivée d’autorité de certification (CA) comme Let’s Encrypt permettant de générer des certificats sans aucune validation humaine et sans besoin financier du côté du demandeur. Heureusement, une technologie permet de se protéger de cela : le DNS CAA pour Certification Authority Authorization.

Fonctionnement

Le fonctionnement est relativement simple : lors d’une demande de certificat, l’autorité de certification (CA) va vérifier les enregistrements CAA du domaine. Si ces enregistrements autorisent l’autorité de certification à émettre un certificat pour ce domaine, le processus continu. Dans le cas contraire, le processus est interrompu.

Quelle CA est concernée ?

Du fait de la méthode de fonctionnement, on peut supposer que les autorités de certification appliquant la norme de contrôle sont limitées aux principaux acteurs du marché. En réalité, c’était le cas jusqu’au mois de septembre 2017 : en mars 2017, le comité des autorités de certifications (formellement « CA/Browser Forum » ) a pris la décision de rendre la vérification CAA obligatoire pour toute émission de certificat avec une mise en effet au mois de septembre (référence).

Mise en oeuvre

Les enregistrements prennent la forme suivante :

flag propriété "valeur"

Le flag prend nominalement la valeur 0. Une valeur a 128 permet de définir que, si l’autorité ne sait pas interpréter la propriété, l’émission du certificat est interdite. (surtout utilisé en cas d’évolution future du standard)

3 types de propriétés existent :

  • issue « [CA] »: défini la CA autorisée pour le domaine/sous-domaine. Un « ; » en place de la CA permet de refuser toutes les autorités
  • issuewild « [CA] » : identique que le précédent, mais pour les certificats wildcard
  • iodef « [value] » : défini le moyen de contact en cas de transgression des limitations définies. Cet élément n’est pas supporté par toutes les CA. La valeur peut prendre la forme « mailto:adresse@domaine.com ».

La valeur de issue/issuewild doit être un nom de domaine. Le propriétaire de ce domaine aura le droit d’émettre un certificat pour le sous-domaine en question.

Exemple

blog.cholletk.me. 3599 IN CAA 0 issue "letsencrypt.org"
blog.cholletk.me. 3599 IN CAA 0 issuewild ";"
blog.cholletk.me. 3599 IN CAA 0 iodef "mailto:domains@domains.tld"

Laisser un commentaire