Start Beveiliging

Certificate Authority Authorization

CAA (Certificate Authority Authorization) is een beveiligingstechniek waarmee ik als domeineigenaar kan aanduiden welke root CA (Certificate Authority) certificaat aanvragen voor mijn domein mag ondertekenen. Hiermee voorkom ik dat een andere CA dan mijn voorkeur certificaten voor mijn domein kan uitgeven. Het is een techniek welke gebruik maakt van een CAA DNS record. In dit artikel ga ik dieper op dit onderwerp in.

Vanaf september 2017 zijn certificaat uitgevers verplicht het DNS CAA record van een domeinnaam te controleren en op te volgen. Domeineigenaren zijn niet verplicht dit record in te vullen.

Beveiligingsstandaarden ontbreken in DNS. Hierdoor is het mogelijk dat onbevoegden records aanpassen. Met DNSSEC voorkom ik deze kwetsbaarheid.

Hoe werkt CAA?

CAA is gebaseerd op en gebruikt DNS door middel van een CAA record. Een CAA record bestaat uit een flag, tag en value. Een domein kan meer dan één CAA record hebben. Bijvoorbeeld, mijn domein (mijnlabo.be) heeft drie CAA records:

0 iodef "mailto:info@mijnlabo.be"
0 issuewild ";"
0 issue "letsencrypt.org"

In bovenstaande CAA records is het cijfer 0 een flag; zijn iodef, issuewild en issue een tag; en zijn "mailto:info@mijnlabo.be", ";" en "letsencrypt.org" een value.

Het Linux commando host -t CAA mijnlabo.be geeft mijn CAA records weer.

Een flag is een byte (decimaal 0 t.e.m. 255) waarvan enkel bit 7 (decimaal 128) een betekenis heeft. Alle andere bits hebben nog geen betekenis en zijn gereserveerd voor toekomstig gebruik. Bit 7 (decimaal 128) staat voor Issuer Critical Flag, wat betekent dat een CA geen certificaat mag uitgeven als een kritische value niet wordt ondersteund. Flag 128 wordt niet vaak gebruikt.

Een tag kan drie waarden hebben, issue, issuewild en iodef.
issue geeft de toestemming aan een CA provider (bijvoorbeeld Value "letsencrypt.org") om een certificaat te ondertekenen. Is de Value gelijk aan ";" dan mag geen enkele CA provider een certificaat uitgeven.
issuewild geeft de toestemming aan een CA provider om een wildcard certificaat te ondertekenen. Is de Value gelijk aan ";" dan mag geen enkele CA provider een certificaat uitgeven.
Tot slot, iodef heeft als Value een e-mail of web URL waarnaar een CA provider een bericht moet sturen als hij a.d.h.v het CAA record niet is gemachtigd een certificaat te ondertekenen. Hierdoor weet ik als domeineigenaar dat een andere niet gemachtigde CA provider een vraag heeft ontvangen om een certificaat voor mijn domein te ondertekenen.

Ik kan mijn CAA record manueel, of (als ik op zeker wil spelen) d.m.v. SSLMate CAA Record Helper samenstellen.

Hoe test ik mijn CAA record?

Mijn CAA record test ik met DNS CAA Tester.