Крупнейшие и наиболее популярные центры сертификации договорились, что начиная с 8 сентября 2017 года в обязательном порядке строго следовать инструкциям, указанным в CAA-записях доменного имени или субдомена для которого запрашивается выпуск сертификата.
Использование CAA-записи позволит повысить уровень безопасности в сети Интернет и сократить случаи неавторизованного получения сертификатов для сторонних доменных имен.
Я подготовил подробную инструкцию, которая разъясняет возможности CAA-записи и формат ее использования.
Формат записи:
CAA <flags> <tag> <value>
Значение CAA-записи состоит из трех частей, разделенных пробелом:
flag
Значение flag представляет собой 8-битное число, старший бит которого обозначает критичность понимания записи центром сертификации. В данный момент допустимы следующие значения:
- 0 — Если значение tag не поддерживается или не распознается центром сертификации, то центру сертификации разрешено по своему усмотрению выпустить сертификат для доменного имени или субдомена.
- 128 — Если значение tag не поддерживается или не распознается центром сертификации, то центр сертификации не должен выпускать сертификат для доменного имени или субдомена.
tag
Значение tag может принимать одно из следующих значений:
- issue — Определяет центр сертификации, которому разрешена выдача сертификата, для используемого в названии записи доменного имени или субдомена.
- issuewild — Определяет центр сертификации, которому разрешена выдача wildcard-сертификата, для используемого в названии записи доменного имени или субдомена. Сертификат распространяется на доменное имя или субдомен непосредственно и на все его субдомены.
- iodef — Определяет адрес электронной почты или URL (соответствующий стандарту RFC 5070), который центр сертификации должен использовать для уведомлений, в случае получения запроса на выпуск сертификата в нарушении определенных CAA-записью правил для доменного имени.
value
Значение value зависит от значения tag и должно быть заключено в двойные кавычки ("").
Некоторые центры сертификации позволяют использовать дополнительные параметры для значения value. В этом случае, параметры должны быть разделены точкой с запятой (;).
Пример: 0 issue "comodoca.com; account=12345"
- В случае, если tag = issue — Доменное имя центра сертификации, которому разрешен выпуск сертификата для указанного в названии записи доменного имени или субдомена. Для запрета выпуска сертификата для всех центров сертификации для указанного в названии записи доменного имени или субдомена необходимо использовать точку с запятой (;) вместо доменного имени центра сертификации.
Пример: example.com. CAA 0 issue "comodoca.com"
Пример: example.com. CAA 0 issue ";" - В случае, если tag = issuewild — Аналогично случаю, когда tag = issue, за исключением, что правило применяется для wildcard-сертификатов.
Пример: example.com. CAA 0 issuewild "comodoca.com"
Пример: example.com. CAA 0 issuewild ";"
- В случае, если tag = iodef — Адрес электронной почты ("mailto:abuse@example.com") или URL ("http(s)://URL"), который центр сертификации должен использовать в случае получения неавторизованного запроса для выдачи сертификата для используемого в названии записи доменного имени или субдомена.
Пример: example.com. CAA 0 iodef "mailto:abuse@example.com"
Особенности:
- Значение записи для доменного имени или субдомена наследуется на все его субдомены, если явно не задано другое.
- Для определения двух и более центров сертификации для одного доменного имени или субдомена нужно использовать несколько CAA-записей.
- Отсутствие CAA-записи будет интерпретироваться любым центром сертификации как разрешение на выпуск сертификата.
- Полная спецификация CAA-записи доступна в документе RFC 6844.
Как проверить?
dig example.com caa
Кто поддерживает?
CAA-запись поддерживают не все DNS-провайдеры. Актуальный список по состоянию на 30 августа 2017 года в алфавитном порядке:
Afraid.org Free DNS
Amazon Route 53
BuddyNS
Cloudflare
ClouDNS
Constellix DNS
DNSimple
DNS Made Easy
Dyn Managed DNS
Domeneshop
Google Cloud DNS
Gandi
Hurricane Electric Free DNS
Neustar UltraDNS
NS1
Zilore
Онлайн генераторы?
Вы можете воспользоваться этим или этим онлайн-генератором для правильного и быстрого создания необходимых CAA-записей.
Комментарии (26)
Nappo
30.08.2017 12:36+1Как будут реагировать браузеры если у сайта нет САА?
cooladmin
30.08.2017 12:37На момент моих изысканий на этот счёт, я не нашёл какой либо причины браузеру проверять эти записи. Ну то есть, эта запись нужна только УЦ и только в МОМЕНТ выпуска серта.
Браузер может её проверить, но в RFC не говорится, что ему делать в том случае если запись не нашлась, а серт валидный.mnasonov Автор
30.08.2017 12:43Эта запись только для центра сертификации. Браузер не взаимодействует с ней.
alexxisr
30.08.2017 16:26+1а какой в этом смысл? если кто-то захочет выпустить сертификат для домена, то он его выпустит не глядя на caa.
по-моему как раз браузер должен сравнивать — кто должен был выпустить и кто реально выпустил и при несовпадении считать сертификат невалидным.mnasonov Автор
30.08.2017 16:27А как вы его выпустите без участия центра сертификации?
Основная идея как раз в том, чтобы в итоге все центры сертификации проверяли САА в дополнении к существующим способам проверки (почта, веб-сайт, документы).
ildarz
30.08.2017 16:37если кто-то захочет выпустить сертификат для домена, то он его выпустит не глядя на caa.
Это механизм проверки для добросовестных УЦ, а не для злонамеренных.
по-моему как раз браузер должен сравнивать
Для браузеров предназначен другой тип записей — TLSA.
tankistua
30.08.2017 23:42Ну так не прокати уже фраза: мы не знали
за выдачу сертификата неавторизированным цс будет моментальный бан, а шутить после симантека и востгна вряд ли найдутся желающие
mxms
31.08.2017 21:22Вообще, DANE предназначен для верификации клиентским софтом. Если говорить о браузерах, то ни один из них его не поддерживает. Да и вообще с поддержкой DANE очень плохо.
yurror
31.08.2017 11:01Поправка. Нужна Вам и не только в момент легитимного выпуска сертификата. А для того чтобы злодеи не выпустили через другой CA левый сертификат.
alexxisr
31.08.2017 12:10+1если СА позволяет злодеям выпускать сертификат для чужого домена, то кто гарантирует, что он будет смотреть на какие-то записи в днс?
разве смысл существования СА не в том, чтобы проверить является ли проситель сертификата владельцем сертифицируемого ресурса?
cooladmin
30.08.2017 12:36Ну и сошлю на свою заметку на этот счёт, мало ли мой формат изложения кому-то зайдёт. telegra.ph/CHto-takoe-DNS-Certification-Authority-Authorization-08-10
KrondorTheGreat
30.08.2017 12:48+1Будут ли отозваны сертификаты, если центр сертификации пропадет из правил в CAA?
mnasonov Автор
30.08.2017 12:49Нет, CAA-запись нужна и проверяется только в момент выдачи сертификата.
ildarz
30.08.2017 13:40+1Каждый центр сертификации, начиная с 8 сентября 2017 года будет обязан строго следовать инструкциям, указанным в CAA-записях доменного имени или субдомена для которого запрашивается выпуск сертификата.
Вовсе не каждый. Просто ассоциация крупнейших УЦ договорилась, что ее члены в обязательном порядке будут следовать стандарту, описанному в RFC 6844. Указанный RFC имеет статус Proposed standard, обязательным не является, и это решение не имеет никакой силы для УЦ, не входящих в эту ассоциацию.
skymal4ik
30.08.2017 13:43Есть информация, как это будет работать с Let's Encrypt?
Возможно, уже есть готовые примеры записей, разрешающие выпуск этих сертификатов для своих доменов?pixelcube
30.08.2017 13:45Да, вот тоже интересует вопрос, как это работает с системами автоматический выдачи ACME, как, например, у Let's Encrypt? Там ведь проверка через TXT
mnasonov Автор
30.08.2017 13:51Да, никакого противоречия нет, они будут сначала проверять наличие CAA-записей, а потом приступать к процедуре выдачи по ACME, если центру не разрешено выдать сертификат, он сообщит ошибкой urn:ietf:params:acme:error:caa
mureevms
30.08.2017 17:07Cloudflare заявляет о поддержке, но при попытке добавить уже месяц выдает такое сообщение
CAA records are currently in beta. Please open a support ticket to request access to the beta. (Code: 1039)
pixelcube
Это работает только с DNSSEC?
mnasonov Автор
Можно использовать и без DNSSEC. В RFC 6844 он носит рекомендательный характер.
cooladmin
Эта запись нужна центру сертификации для проверки того, что он (центр сертификатов) имеет права выпустить сертификат. К DNSSEC, это, кажется, вообще не имеет никакого отношения.