Enregistrement CAA — Certification Authority Authorization

L’enregistrement CAA restreint quelles autorités de certification (CA) sont autorisées à émettre des certificats TLS pour ton domaine. C’est une couche de sécurité supplémentaire : même si une CA mal intentionnée ou compromise voulait émettre un certificat pour ton domaine, le CAA l’en empêche.

Voir Enregistrements DNS pour la liste complète des types.


Problème résolu

Sans CAA :

N'importe quelle CA dans le monde peut émettre
un certificat pour monentreprise.fr
→ Si une CA est compromise ou corrompue,
  elle peut créer un faux certificat
  → attaque man-in-the-middle possible ❌

Avec CAA :

Seules les CA explicitement listées peuvent émettre
→ Let's Encrypt ✅
→ Toute autre CA → refus d'émission ✅

Structure d’un CAA

domaine.  TTL  IN  CAA  flag  tag  valeur
ChampRôle
flag0 = non critique / 128 = critique (bloque si le tag est inconnu)
tagissue, issuewild ou iodef
valeurNom de la CA autorisée ou URL/email de rapport

Scénario concret : sécuriser monentreprise.fr

Tu utilises cert-manager avec Let’s Encrypt pour tes certificats Kubernetes, et tu veux interdire toute autre CA :

; Autoriser uniquement Let's Encrypt pour les certificats standards
monentreprise.fr.  3600  IN  CAA  0  issue  "letsencrypt.org"
 
; Interdire explicitement les wildcards (*.monentreprise.fr)
monentreprise.fr.  3600  IN  CAA  0  issuewild  ";"
 
; Recevoir un email si une CA non autorisée tente d'émettre
monentreprise.fr.  3600  IN  CAA  0  iodef  "mailto:security@monentreprise.fr"

Ce qui se passe quand cert-manager demande un certificat :

cert-manager → Let's Encrypt : "Donne-moi un certificat pour monentreprise.fr"
Let's Encrypt vérifie le CAA :
  dig monentreprise.fr CAA
  → "letsencrypt.org" est dans la liste issue ✅
  → Let's Encrypt émet le certificat ✅

Ce qui se passe si une autre CA tente d’émettre :

CA malveillante → essaie d'émettre pour monentreprise.fr
  dig monentreprise.fr CAA
  → seul "letsencrypt.org" est autorisé
  → CA refusée ❌
  → Rapport envoyé à security@monentreprise.fr (via iodef)

Les 3 tags en détail

issue — Certificats standards

Autorise une CA à émettre pour monentreprise.fr et ses sous-domaines :

monentreprise.fr.  IN  CAA  0  issue  "letsencrypt.org"
monentreprise.fr.  IN  CAA  0  issue  "digicert.com"

Plusieurs issue = plusieurs CA autorisées (Let’s Encrypt en priorité, DigiCert en backup).

issuewild — Certificats wildcard

Contrôle spécifiquement l’émission de *.monentreprise.fr :

; Autoriser Let's Encrypt pour les wildcards aussi
monentreprise.fr.  IN  CAA  0  issuewild  "letsencrypt.org"
 
; Interdire tous les wildcards (seul ";") 
monentreprise.fr.  IN  CAA  0  issuewild  ";"

Si issuewild est absent, c’est le tag issue qui s’applique aux wildcards.

iodef — Rapports de violation

URL ou email pour être notifié si une CA non autorisée tente une émission :

monentreprise.fr.  IN  CAA  0  iodef  "mailto:security@monentreprise.fr"
monentreprise.fr.  IN  CAA  0  iodef  "https://monentreprise.fr/caa-report"

Héritage sur les sous-domaines

Le CAA s’applique par héritage : si monentreprise.fr a un CAA, il s’applique aussi à api.monentreprise.fr, www.monentreprise.fr, etc. — sauf si un CAA est défini spécifiquement pour le sous-domaine.

; CAA global
monentreprise.fr.      IN  CAA  0  issue  "letsencrypt.org"
 
; CAA spécifique pour api — autorise aussi DigiCert (certificat EV)
api.monentreprise.fr.  IN  CAA  0  issue  "letsencrypt.org"
api.monentreprise.fr.  IN  CAA  0  issue  "digicert.com"

Vérification

# Voir les CAA d'un domaine
dig monentreprise.fr CAA
 
# Vérifier ce que Let's Encrypt voit avant d'émettre
# → https://caatest.co.uk
# → https://www.entrust.com/free-certificates/caa-check/
 
# Vérification en ligne complète
# → https://dnschecker.org/#CAA/monentreprise.fr

En relation avec