# DNS Certification Authority Authorization

DNS Certification Authority Authorization (CAA) est une spécification basée sur le DNS permettant au titulaire d'un nom de domaine de lister les autorités de certification (CA) qui sont autorisées à délivrer des certificats pour ce domaine. Ce mécanisme n'est pas censé servir de vérification supplémentaire pour un client TLS (navigateur web en HTTPS par exemple, cf. DANE dans ce cas) mais plutôt de confirmation/refus aux autorités de certification dans leurs processus d'émission de certificat.
DNS Certification Authority Authorization est spécifié par la RFC 6844. Elle définit un nouveau type d'enregistrement de ressource DNS : "CAA", qui peut stocker un large éventail d'informations utiles aux autorités de certification, comme des URL d'autorités habilitées à émettre un certificat ou comme un webservice ou une adresse électronique de contact permettant aux autorités de communiquer voire signaler divers soucis au responsable du nom de domaine.

## Structure de l'enregistrement de ressource CAA

Chaque enregistrement de ressource CAA est constitué d'indicateurs réunis sur un octet, d'une étiquette et d'une valeur. Les indicateurs permettent d'influer sur l'interprétation de l'enregistrement et l'étiquette indique quel type d'information est contenu dans le champ "valeur".
Actuellement, un seul indicateur est défini: le issuer critical est représenté par le bit le plus significatif de l'octet. S'il est activé (c'est-à-dire que l'entier résultant est égal ou supérieur à 128) l'autorité de certification qui n'est pas à même de comprendre ou de mettre en œuvre l'étiquette de cet enregistrement doit refuser de délivrer un certificat pour le domaine. Ceci est similaire au fonctionnement des extensions critiques dans les certificats X509.
Outre l'octet-indicateur, trois étiquettes sont définies:

### issue

    autorise une autorité (via son nom de domaine, spécifié dans le champ "valeur") à délivrer des certificats pour le domaine sur lequel l'enregistrement pointe,

### issuewild

    est similaire à issue et vise les émissions de certificats wildcard,

### iodef

    indique un moyen pour les autorités de signaler une demande de certificat ou un souci avec celle-ci.

## Exemples d'utilisation

Dans sa forme la plus simple, l'enregistrement ressemble en général à l'exemple ci-dessous. L'autorité ExampleNet (et seulement elle) est autorisée à émettre des certificats pour le nom de domaine example.com, ainsi que pour www.example.com et www.subdomain.example.com grâce au mécanisme hiérarchique de vérification:
L'exemple ci-dessous est volontairement d'une complexité inutile afin de souligner certains comportements éventuellement fâcheux :
* l'indicateur à 128 sur iodef implique qu'une autorité n'est autorisée à certifier que si elle sait gérer l'étiquette iodef,
* les autorités de certification Wikipedia et Wikimedia sont autorisées à émettre des certificats pour example.com et, seulement si elles savent gérer l'étiquette oups, à en émettre aussi pour www.example.com,
* l'autorité Creative Commons peut émettre un certificat wildcard *.example.com mais ne peut y inclure example.com (elle pourra s'en plaindre auprès de webmaster@example.com),
* personne n'est autorisé à certifier nocerts.example.com mais cela n'a pas d'effet sur le certificat wildcard qui l'englobera tout de même.

## Serveurs DNS compatibles

Les enregistrements de ressource (RR) CAA sont pris en charge par le serveur DNS BIND (versions 9.10.1B et ultérieures), le NSD (depuis la version 4.0.1), le serveur Knot DNS (depuis la version 2.2.0) et PowerDNS (depuis la version 4.0.0).