Uitleg CAA

Wat is CAA?

Om een website veilig (via `https://`) te serveren heb je een TLS-certificaat nodig, uitgegeven door een Certificate Authority (CA) zoals Let's Encrypt of DigiCert. Het probleem: in principe kan élke CA een certificaat voor élk domein uitgeven. Een CAA-record beperkt dat: je legt in je DNS vast wélke CA's het voor jóuw domein mogen doen. Krijgt een andere CA zo'n aanvraag binnen, dan hoort die te weigeren.

Hoe het werkt

Vóórdat een CA een certificaat uitgeeft, is die verplicht je CAA-record te controleren. Staat de CA niet op de lijst, dan mag hij niet uitgeven. Zo voorkom je dat iemand via een andere uitgever stiekem een geldig certificaat voor jouw domein krijgt (bijvoorbeeld voor een phishingsite).

De controle gebeurt alleen op het moment van uitgifte. Het zegt niets over al bestaande certificaten.

De CA zoekt vanaf de aangevraagde naam omhoog tot je hoofddomein. Eén CAA-record op example.com dekt dus ook al je subdomeinen, tenzij een subdomein een eigen CAA-record heeft.

Hoe ziet het record eruit?

Een CAA-record bestaat uit drie delen: een vlag (meestal 0), een tag, en een waarde.

  • issue: welke CA gewone certificaten mag uitgeven, bijv. example.com CAA 0 issue "letsencrypt.org"
  • issuewild: hetzelfde maar specifiek voor wildcard-certificaten (*.example.com)
  • iodef: een adres waar een CA een melding naartoe kán sturen als iemand een niet-toegestaan certificaat probeert aan te vragen (lang niet elke CA doet dit)

Wil je alle uitgifte blokkeren? Zet dan 0 issue ";". Dat zegt: geen enkele CA mag.

Waarom je dit zou willen

CAA is niet verplicht en je website werkt ook prima zonder. Het verkleint wel de kans dat een aanvaller, of een verkeerd ingestelde dienst, een geldig certificaat voor jouw domein krijgt. Dat scheelt, want met zo'n certificaat kan iemand een nepversie van je site opzetten die in de browser een normaal slotje toont. Voor publieke domeinen die TLS gebruiken is het nette hygiëne, en sommige beveiligingsnormen vragen erom.

Veelgemaakte fouten

  • Je eigen CA vergeten in de lijst, waardoor je volgende certificaatvernieuwing mislukt
  • Diensten vergeten die certificaten voor je aanvragen (CDN, hostingpartij, mailprovider)
  • Denken dat CAA bestaande certificaten intrekt: dat doet het niet. Het werkt alleen bij nieuwe uitgifte
  • Een typefout in de CA-naam (gebruik de officiële, bijv. letsencrypt.org, digicert.com, sectigo.com, pki.goog)

Zo stel je het in

  • Maak een lijst van alle CA's die certificaten voor je uitgeven (kijk in je huidige certificaten of vraag je hosting)
  • Voeg per CA een issue-record toe, en een issuewild als je wildcards gebruikt
  • Optioneel: voeg een iodef-adres toe om meldingen te ontvangen
  • Publiceer en controleer met de scan van DNS Radar

Veelgestelde vragen

Heb ik CAA echt nodig?

Niet verplicht, maar aanbevolen voor publieke domeinen met TLS. Het is een kleine moeite en een nuttige extra drempel tegen misbruik.

Blokkeert CAA bestaande certificaten?

Nee. CAA wordt alleen gecontroleerd op het moment dat een CA een nieuw certificaat uitgeeft. Bestaande certificaten blijven gewoon geldig.

Wat als ik meerdere CA's gebruik?

Voeg gewoon meerdere issue-records toe, één per toegestane CA. Vergeet niet de CA van automatische diensten (zoals een CDN of je hosting).

Wat is het verschil tussen issue en issuewild?

issue geldt voor gewone certificaten. issuewild geldt specifiek voor wildcard-certificaten (*.example.com). Heb je geen issuewild, dan valt wildcard-uitgifte terug op je issue-regels.

Controleer CAA op je eigen domein