CAA – Certificate Authority Authorization
Napisał: Patryk Krawaczyński
08/05/2017 w Bezpieczeństwo Brak komentarzy. (artykuł nr 605, ilość słów: 453)
P
odczas ostatnich testów na SSL Labs zauważyłem nowy wpis, jaki pojawił się na tablicy wyników: DNS CAA: No. O, co chodzi z tym wsparciem dla DNS CAA? CAA jest nowym typem rekordu DNS, który określa, jaki CA (Certificate Authority – określenie organizacji bądź firmy zajmującej się wydawaniem i obsługą elektronicznych certyfikatów) jest uprawniony do wystawienia certyfikatu dla danej domeny. CAA został opisany w RFC 6844 w 2013 roku w celu poprawy siły ekosystemu PKI (Public Key Infrastructure). Niestety przez ostatnie 4 lata pozostawał on tylko w statusie propozycji standardu. Jednak za sprawą ostatniego głosowania CA/Browser Forum ma to się zmienić od 8 września 2017 roku. Po tym czasie standard wydawania certyfikatów zostanie wzbogacony o sprawdzanie rekordów CAA.
Najczęstszą słabością ekosystemu PKI jest fakt, że jakikolwiek urząd certyfikacji może wystawić certyfikat dla dowolnej domeny. Mimo, że w wielu przypadkach CA chciały postępować słusznie, nie było dla nich przewidzianych żadnych technicznych kontroli, które pomogą im w podjęciu decyzji. Skoro ekosystem PKI jest tak słaby, jak jego najsłabsze ogniowo – z setkami urzędów certyfikacji istnieje wiele słabych linków. CAA wykorzystując system DNS buduje mechanizm, który pozwala właścicielowi domeny na stworzenie listy kontrolnej z wykazem urzędów, które mogą wystawiać dla niego certyfikaty. Odbywa się to poprzez rekord zasobu (R]esource R]ecord) o nazwie CAA (typ 257). W ten sposób właściciel ogranicza emisję certyfikatów określając zero lub więcej urzędów certyfikacji. Jeśli dany CA jest uprawniony do wydania certyfikatu jego własna nazwa będzie znajdowała się w rekordzie DNS. Poniżej przykład konfiguracji CAA dla domeny nfsec.org. Poniższy format obsługują serwery w wersji BIND >= 9.9.6, PowerDNS >= 4.0.0, NSD >= 4.0.1, Knot DNS >= 2.2.0:
nfsec.org. IN CAA 0 issue "domeny.pl" nfsec.org. IN CAA 0 issuewild ";" nfsec.org. IN CAA 0 iodef "mailto:cert@nfsec.org"
Format dla BIND <9.9.6, NSD <4.0.1:
nfsec.org. IN TYPE257 \# 16 00056973737565646F6D656E792E706C nfsec.org. IN TYPE257 \# 12 0009697373756577696C643B nfsec.org. IN TYPE257 \# 27 0005696F6465666D61696C746F3A63657274406E667365632E706C
I to wszystko. Przed wydaniem certyfikatu CA powinien sprawdzić rekord DNS i odmówić wydania, chyba że sam znajduje się na białej liście. Poza dyrektywą “issue” z powyższego przykładu obsługiwane są również dwie inne: “issuewild“, które ograniczają wydawanie certyfikatów typu wildcard, a “iodef” zapewnia wsparcie dla powiadomień w przypadkach, gdy coś pójdzie nie tak.
Do odpytań o rekord CAA
potrzebujemy też nowszej wersji dig (np. 9.9.4 z CentOS 7 lub 9.10.3 z Ubuntu 16.04) lub dedykowanego narzędzia. O starsze wersje wpisów możemy odpytać za pomocą typu 257:
~# dig google.com type257 google.com. 86400 IN TYPE257 \# 19 0005697373756573796D616E7465632E636F6D google.com. 86400 IN TYPE257 \# 15 00056973737565706B692E676F6F67
Jeśli chcemy w prosty i szybki sposób stworzyć wpisy dla naszej domeny, możemy skorzystać z generatora od SSLMate. Polecam także rozgryzienie w jaki sposób są tworzone wpisy dla starszej wersji serwerów DNS.
Więcej informacji: CAA Records