DNS – Rekord typu CAA

  DNS, Rekordy DNS, Teoria DNS

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:

  1. flag – liczba dodatnia z przedziału 0-255
  2. tag – kod ASCII – definiuje właściwości rekordu CAA
  3. 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).

Przykład ustawienia w WEDOS DNS