fb pixel

Czym jest CAA w DNS i jak go okiełznać?

|

CAA czyli „Certification Authority Authorization” to mało znany rekord DNS, o którym ostatnio jest głośniej z powodu, że stał się obowiązkowy w procesie wystawiania certyfikatów SSL. O co tu chodzi i jak się do niego zabrać?

Co to jest CAA?

Zacznijmy od tego czym w ogóle jest CAA. Z pewnością kojarzycie takie rekordy DNS jak: A/AAAA, MX, CNAME czy TXT. CAA to kolejny wpis w DNS, który za zadanie ma określić KTO może wystawić certyfikat SSL dla danej domeny.

Rekord ten obecny jest od ładnych paru lat, nie mniej raczej jako wpis w dokumentacji. A to głównie z tego powodu, że do tej pory nie był obowiązkowy do sprawdzania dla wystawców certyfikatów SSL. A wiadomo: skoro coś jest opcjonalne to nie spełnia swojego zadania bo co z tego, że jeden wystawca to sprawdzi skoro cała reszta nie. Z tego powodu jest praktycznie nieznany i przez to nazywany jako „nowy rekord”.

Sytuacja zmieni się od września 2017 kiedy to wszyscy wystawcy certyfikatów SSL będą zobowiązani do sprawdzania CAA w momencie wystawiania certyfikatu.

Oczywiście dla nas jako użytkowników ten wpis nie jest konieczny. Jeżeli tylko chcesz ograniczyć wystawianie certyfikatów do danego wystawcy to wkrótce będziesz miał taką możliwość. Inna sprawa, że przeważająca większość paneli do obsługi rekordów DNS nie wspiera tego typu pola i jego edycja może być przynajmniej na razie mocno utrudniona.

Anatomia CAA

Przykładowy wpis może wyglądać tak:

example.com.  IN  CAA  0 issue "digicert.com"
example.com.  IN  CAA  0 issue "letsencrypt.org"
example.com.  IN  CAA  0 issuewild ";"
example.com.  IN  CAA  0 iodef "mailto:security@example.com"

I te instrukcje w kolejności oznaczają:

  • dwa pierwsze wpisy określają jacy wystawcy (CAs - certificate authorities) mogą wystawić certyfikat SSL dla tej domeny. W tym wypadku TYLKO Let’s Encrypt i DigiCert,
  • kolejny oznacza, że ŻADEN CAs nie może wystawić certyfikatu typu wildcard (średnik oznacza pusty wpis czyli nikt nie może)
  • ostatni wpis mówi, że każdy inny wystawca niż ci wyżej wymienieni jest zobowiązany wysłać informację o próbie wystawienia takiego certyfikatu na podanego emaila lub URL.

Odpytywanie DNS

Do sprawdzania DNSów oczywiście najlepiej użyć konsolowego DIGa.

$ dig google.com CAA
google.com.		86400 IN CAA 0 issue "symantec.com"
google.com.		86400 IN CAA 0 issue "pki.goog"

Jeżeli zamiast rekordów CAA dostajesz zwykłe A to znaczy, że masz starą wersję DIGa, która jeszcze tego nie obsługuje. Wprawdzie możesz zapytać bezpośrednio o „Resource Record Type 257” ale wyniki będą przedstawione binarnie.

$ dig google.com type257
google.com.		86399	IN	TYPE257	\# 19 0005697373756573796D616E7465632E636F6D
google.com.		86399	IN	TYPE257	\# 15 00056973737565706B692E676F6F67

W takim wypadku lepiej skorzystać z innego, dedykowanego do tego narzędzia - dnscaa.

$./digcaa google.com                                                                                          2 records found
google.com.	86399	IN	CAA	0 issue "pki.goog"
google.com.	86399	IN	CAA	0 issue "symantec.com"

Dodatkowa literatura

Dodaj na LinkedIn
Mirosław Okoński
Przede wszystkim admin, potem webdeveloper choć kiedyś było odwrotnie. Obecnie Full Stack Engineer, CTO i System Architect. Po godzinach fan dobrych seriali, których nigdy nie ma czasu obejrzeć. Kawożłop. Miłośnik piwa i Metaxy. W czasie pomiędzy kontuzjami biega.