Rekord Certification Authority Authorization (CAA) umożliwia określenie, które urzędy certyfikacji (CA) mogą wydawać certyfikaty dla domeny. Rekord ten pozwala także na zdefiniowanie, komu i w jaki zostanie przesłane powiadomienie, w przypadku gdy ktoś podejmie próbę wystawienia certyfikatu przez urząd certyfikacji (CA), który nie został w danym rekordzie autoryzowany.
Jeśli dla domeny nie jest ustawiony żaden rekord CAA, certyfikat dla domeny może być wystawiony przez dowolny urząd certyfikacji. W przypadku, że rekord CAA został u domeny ustawiony, certyfikat może być wystawiony tylko przez ten CA, który został do tego upoważniony przez ustawienie rekordu CAA u domeny.
Rekordy CAA umożliwiają ustawienie reguły dla całej domeny, jak i dla poszczególnych subdomen. Jeśli rekord CAA został ustawiony dla całej domeny (np. domena.tld), będzie odnosił się także do wszystkich jej subdomen (np. subdom.domena.tld), o ile dla danej subdomeny nie został ustawiony odrębny rekord CAA z inną regułą.
Nie każdy CA umożliwia autoryzację za pomocą rekordów CAA. W przypadku, gdy CA wystawiający certyfikat nie obsługuje rekordów CAA, zapisane w nim reguły będą przez niego ignorowane, a certyfikat zostanie wystawiony nawet w przypadku, gdy nie jest to zgodne z regułami określonymi w rekordach CAA.
Format rekordu CAA
Rekord CAA składa się z następujących części:
- flag – liczba dodatnia z przedziału 0-255
- tag – kod ASCII – definiuje właściwości rekordu CAA
- value – wartość przypisana do tagu
Flag – ustawiamy 0 (więcej w RFC6844)
Tag – wg RFC6844 są definiowane 3 wartości:
- issue – autoryzuje zdefiniowany CA do wystawienia dowolnego typu certyfikatu
- issuewild – autoryzuje zdefiniowany CA jedynie do wystawienia certyfikatu wildcard
- iodef – określa adres URL, na który zostanie zgłoszone naruszenie reguł definiowanych w CAA danej domeny
Value – wartość rekordu CAA przypisana do konkretnych tagów.
Użycie rekordu CAA
Jeden rekord CAA może zawierać tylko jedną regułę tag-value. Dla każdej domeny można zdefiniować kilka rekordów CAA z różnymi regułami.
Przykład 1
U domeny domena.tld chcemy zezwolić na wystawianie certyfikatu tylko przez CA Let’s Encrypt.
domena.tld. 1800 IN CAA 0 issue "letsencrypt.org"
Przykład 2
U domeny domena.tld chcemy zezwolić na wystawianie certyfikatu przez CA Let’s Encrypt i przezCA Comodo.
domena.tld. 1800 IN CAA 0 issue "letsencrypt.org" domena.tld. 1800 IN CAA 0 issue "comodo.com"
Przykład 3
domena.tld. 1800 IN CAA 0 issue "letsencrypt.org" sub1.domena.tld. 1800 IN CAA 0 issue "comodo.com" sub2.domena.tld. 1800 IN CAA 0 issue "letsencrypt.org" sub2.domena.tld. 1800 IN CAA 0 issue "comodo.com"
Powyższe rekordy będą miały następujący wynik:
- tylko CA Let’s Encrypt może wystawić certyfikat dla domeny domena.tld i wszystkich jej subdomen poza sub1.domena.tld
- tylko CA Comodo może wystawit certyfikat dla subdomeny sub1.domena.tld
- certyfikat dla subdomeny sub2.domena.tld może być wystawiony przez Let’s Encrypt lub Comodo
Przykład 4
domena.tld. 1800 IN CAA 0 issue "letsencrypt.org"
domena.tld. 1800 IN CAA 0 issuewild "comodo.com"
UWAGA! W tym przypadku właściwość issuewild u drugiego rekordu przepisze właściwość issue u pierwszego. Ponieważ Let’s Encrypt nie obsługuje certyfikatów wildcard, w ostatecznym rozrachunku tylko CA Comodo może wystawić certyfikat dla domeny domena.tld.
Przykład 5
Podanie adresu URL, na który ma być wysłana notyfikacja w przypadku wystawienia certyfikatu przez urząd, który nie został do tego upoważniony w rekordzie CAA.
domena.tld. 1800 IN CAA 0 issue "letsencrypt.org" domena.tld. 1800 IN CAA 0 iodef "mailto:notice@domena.tld"
W przypadku podjęcia próby wystawienia certyfikatu dla domeny domena.tld przez CA inny niż Let’s Encrypt, powiadomienie o tym zdarzeniu zostanie przesłane na e-mail notice@domena.tld (tylko w przypadku, że CA wystawiający certyfikat to umożliwia).