Certificats · CAA

Un enregistrement CAA bloque le renouvellement du certificat : comment trouver la cause et corriger

La réponse courte

Avant d'émettre un certificat, une AC publique doit lire vos enregistrements CAA, et elle doit refuser s'ils ne la nomment pas (RFC 8659, Baseline Requirements du CA/Browser Forum 3.2.2.8). Le renouvellement échoue quand l'enregistrement CAA liste une autre AC que celle qui renouvelle, quand un enregistrement mal formé ne nomme personne, ou quand un certificat générique (wildcard) n'est pas autorisé.

Le calcul : quel enregistrement lit l'AC

Une AC ne lit pas toute votre zone. Elle part du nom exact figurant sur le certificat et remonte d'un label à la fois, et le premier nom qui porte des enregistrements CAA décide. Ici, un CDN tente de renouveler www.shop.example.com avec Let's Encrypt :

Nom interrogé par l'ACCe que ça trouveSuite
www.shop.example.comAucun enregistrement CAARemonter d'un label
shop.example.comAucun enregistrement CAARemonter d'un label
example.com0 issue "digicert.com"Cet ensemble décide
Let's Encrypt (letsencrypt.org) ne figure pas dans cet ensembleRefusé

La correction tient en une ligne sur example.com : 0 issue "letsencrypt.org" à côté de la ligne DigiCert. Chaque AC que vous utilisez a besoin de son propre enregistrement issue ; l'ensemble est une liste d'AC autorisées, pas un classement.

Ce qui casse, et qui s'en aperçoit

  • L'AC refuse avant qu'aucun certificat n'existe. Votre tâche de renouvellement journalise une erreur CAA et votre site continue de servir l'ancien certificat : rien ne semble anormal jusqu'à ce que celui-ci expire. Baseline Requirements 3.2.2.8
  • Un enregistrement mal formé ne nomme personne. Une erreur courante consiste à coller les flags et le tag dans le champ valeur, ce qui publie quelque chose comme 0 issue "0 issue letsencrypt.org". Cela ne correspond à aucune AC. Si c'est le seul enregistrement, aucune AC ne peut émettre. RFC 8659 §4.2
  • Les certificats génériques suivent leur propre règle. Quand des enregistrements issuewild existent, ce sont eux qui décident pour les certificats génériques, à la place de issue, et 0 issuewild ";" interdit tout certificat générique. RFC 8659 §4.3
  • Le flag critique bloque tout ce qu'il ne comprend pas. Un enregistrement avec le flag 128 et un tag que l'AC ne connaît pas oblige l'AC à refuser. RFC 8659 §4.1
  • Des certificats plus courts laissent moins de marge. Les certificats publics passent à 100 jours en mars 2027 et à 47 jours en mars 2029 : un renouvellement bloqué par CAA atteint donc l'expiration plus tôt.

Contrôlez votre enregistrement CAA

Le contrôle gratuit du domaine lit les enregistrements CAA de votre domaine, vérifie leur format selon RFC 8659 et indique qui a émis le certificat que vous servez aujourd'hui.

Gratuit, sans compte. Nous lisons uniquement le DNS public et ce que vos serveurs montrent à quiconque s'y connecte.

Corriger, étape par étape

  1. Déterminez quelle AC renouvelle chaque certificat

    Lisez l'émetteur du certificat que vous servez aujourd'hui (le contrôle gratuit l'affiche sur la carte du certificat) et demandez à qui gère les renouvellements : votre CDN, votre panneau d'hébergement, votre répartiteur de charge ou votre client ACME. Un même domaine utilise souvent deux ou trois AC.

  2. Trouvez l'enregistrement que lit l'AC

    Interrogez CAA sur le nom exact, puis sur chaque parent jusqu'à votre domaine, par exemple dig CAA www.shop.example.com +short. Le premier nom qui répond avec des enregistrements CAA est celui qui compte.

  3. Listez chaque AC que vous utilisez

    Un enregistrement issue par AC, avec l'identifiant propre de l'AC : letsencrypt.org, pki.goog pour Google Trust Services, sectigo.com, digicert.com. Ajoutez des enregistrements issuewild si vous utilisez des certificats génériques.

  4. Respectez le format

    Un enregistrement CAA se compose d'un flag, d'un tag et d'une valeur entre guillemets : 0 issue "letsencrypt.org". Dans un panneau DNS à champs séparés, ne mettez que le nom de l'AC dans le champ valeur.

  5. Ajoutez une adresse de signalement

    Ajoutez 0 iodef "mailto:security@example.com". Une AC peut l'utiliser pour vous signaler une demande que votre politique a refusée.

  6. Attendez la fin du TTL et relancez le renouvellement

    L'AC lit l'enregistrement en direct, mais les résolveurs gardent l'ancienne réponse jusqu'à l'expiration de son TTL. Relancez ensuite le renouvellement et vérifiez l'émetteur du nouveau certificat.

Erreurs fréquentes

Lister l'AC auprès de laquelle vous avez acheté, et non celle qu'utilise votre CDN

Les CDN et les panneaux d'hébergement renouvellent souvent avec leur propre AC, et peuvent alterner entre deux d'entre elles. Votre CAA doit toutes les nommer.

Dans le résultat SkyQon : sur un domaine surveillé, l'alerte « CAA will refuse your CA's next renewal » indique le certificat, son AC et la ligne à ajouter. Le contrôle gratuit ponctuel affiche l'émetteur sur la carte du certificat pour que vous compariez vous-même.

Coller les flags dans le champ valeur

Le panneau ajoute déjà 0 issue ; le saisir à nouveau publie une valeur qui ne correspond à aucune AC.

Dans le résultat SkyQon : le constat « CAA is published but authorises no certificate authority » quand il ne reste rien de valide, ou « malformed CAA record published alongside valid ones » quand un enregistrement valide vous couvre encore.

Oublier les certificats génériques

Les enregistrements issue ne couvrent plus un certificat générique dès qu'un enregistrement issuewild existe, et 0 issuewild ";" les interdit tous.

Dans le résultat SkyQon : sur un domaine surveillé, un certificat générique est évalué selon vos enregistrements issuewild dès qu'il en existe, comme le fait une AC.

Un sous-domaine avec son propre ensemble CAA

Un ensemble CAA sur un sous-domaine remplace celui de votre domaine pour chaque nom situé en dessous : une AC ajoutée au sommet peut donc encore y être refusée.

Dans le résultat SkyQon : CAA est lu comme une AC le lit, du nom jusqu'au premier nom qui a des enregistrements. Pour un nom qui reçoit du courrier, le constat indique de quel nom il s'agit. Pour un nom uniquement web, c'est l'alerte de renouvellement bloqué qui le nomme.

Ce que SkyQon fait et ne fait pas

Ce que ça trouve

Les enregistrements CAA qui s'appliquent à votre domaine, lus comme une AC les lit (du nom jusqu'au premier nom qui en a) et vérifiés selon le format RFC 8659. Sur un domaine surveillé, également si l'AC derrière chaque certificat que vous servez peut le renouveler.

Ce que vous obtenez

L'enregistrement exact à publier. À partir de Pro, SkyQon peut aussi créer ou réparer l'enregistrement CAA via l'API de votre fournisseur DNS quand vous le demandez, avec possibilité d'annulation.

Ce que ce n’est pas

Nous ne modifions votre DNS que si vous nous le demandez (à partir de Pro). Un certificat émis par une AC que nous ne reconnaissons pas n'est jamais évalué : il ne reçoit donc aucun avertissement de renouvellement. Le contrôle gratuit ponctuel ne compare pas CAA avec votre certificat.

Enregistrements CAA : les questions fréquentes

Un enregistrement CAA est-il obligatoire ?
Non. Sans enregistrement CAA, n'importe quelle AC publique peut émettre pour votre domaine. Avec, seules les AC que vous nommez le peuvent. Les AC publiques sont tenues de vérifier CAA depuis septembre 2017.
Quels identifiants utilisent les grandes AC ?
Let's Encrypt utilise letsencrypt.org, Google Trust Services pki.goog, Sectigo sectigo.com et DigiCert digicert.com. Vérifiez le nom dans la documentation de votre AC, car quelques AC en acceptent plusieurs.
Faut-il un CAA sur chaque sous-domaine ?
Non. Une AC remonte depuis le nom figurant sur le certificat et utilise le premier ensemble CAA qu'elle trouve : un seul ensemble sur votre domaine couvre donc chaque sous-domaine qui n'a pas le sien.
À quoi sert issuewild ?
Il contrôle les certificats génériques tels que *.example.com. Dès qu'un enregistrement issuewild existe, il remplace issue pour les demandes de certificats génériques. 0 issuewild ";" interdit tout certificat générique.
Que signifie le flag 128 ?
C'est le flag critique. Si un enregistrement porte le flag 128 et un tag que l'AC ne comprend pas, l'AC doit refuser d'émettre. Utilisez 0, sauf si vous savez pourquoi vous avez besoin de 128.
CAA empêche-t-il l'usage abusif d'un certificat déjà émis ?
Non. CAA n'est vérifié qu'à l'émission. Pour voir les certificats émis sur vos noms sans que vous les ayez demandés, surveillez les journaux Certificate Transparency.
CAA s'applique-t-il à mon AC interne ?
Non. Seules les AC qui suivent les règles du CA/Browser Forum doivent le vérifier. Une AC privée que vous exploitez vous-même ignore CAA, sauf si vous la configurez pour le lire.
Et pour un nom qui est un CNAME ?
L'AC résout CAA comme le DNS y répond : la cible d'un CNAME peut donc fournir les enregistrements. Si elle n'en trouve aucun, l'AC continue avec le parent de votre nom d'origine, pas avec celui de la cible.
En combien de temps une modification prend-elle effet ?
Dès que les réponses en cache expirent, c'est-à-dire au bout du TTL de l'enregistrement. Abaissez le TTL la veille d'une modification prévue si vous voulez qu'elle s'applique rapidement.

Trouvez un blocage CAA avant que votre renouvellement ne le rencontre.

Le contrôle gratuit lit en une seule fois les enregistrements CAA qui s'appliquent à votre domaine et votre certificat. Ajoutez le domaine au plan Free et chaque analyse vérifie que l'AC de votre certificat peut toujours le renouveler.