CAA записи

Материал из ISPWiki
Перейти к: навигация, поиск


Введение

CAA (сокращение от Certification Authority Authorization) – это специальная DNS-запись, позволяющая владельцам доменов определять ограниченный список центров сертификации (CA — certificate authorities), которым дозволено выдавать сертификаты SSL/TLS. Полная спецификация CAA-записи доступна в документе RFC 6844.

С 8 сентября 2017 года по требованию SSL-регулятора CA/B Forum все центры сертификации обязаны выполнять проверку CCA-записей, чтобы убедиться, что запросы на выдачу SSL/TLS-сертификатов поступают от владельца домена.

Цель такого решения — снизить число случаев неавторизованной выдачи сертификатов при компрометации центра сертификации или взлома домена, когда злоумышленник может запросить валидный сертификат для скомпрометированного домена у любого центра сертификации и впоследствии применить его для проведения man-in-the-middle (MITM) атак или перенаправления пользователей на фишинговые ресурсы.

Принцип работы CAA записей

При запросе от домена example.com на выдачу сертификата у центра сертификации, данный центр через DNS запрашивает для проверки CAA записи домена. Если он не находит ни одной CAA записи, то пропускает проверку и выписывает сертификат, т.е. отсутствие CAA не мешает выдаче сертификатов.

В случае наличия одной или более CAA записей, например, DNS зона домена содержит CAA записи содержащие тег issue:

example.com. CAA 0 issue "letsencrypt.org"
example.com. CAA 0 issue "startssl.com" 

то центр сертификации ищет в их содержании своё имя. Если он находит себя там, то выдаёт сертификат, если нет – отказывает в запросе.

Значение CAA записи для доменного имени или субдомена наследуется на все его субдомены, если явно не задано другое.

Помимо тега issue, есть тег issuewild отвечающий за выдачу wildcard сертификатов и тег iodef для указания Email или URL-адреса страницы обратной связи.

В результате добавление CAA записи осложняет для злоумышленников возможность запросить у центра сертификации фальшивый сертификат для вашего домена.

Поддержка CAA записи DNS серверами

ISPmanager Lite и DNSmanager позволяет выбрать в качестве DNS-сервера BIND или PowerDNS. В ISPmanager Business использует только PowerDNS.

BIND внедрил поддержку CAA записей начиная с версии 9.9.6. В PowerDNS поддержка CAA записей появилась начиная с версии 4.0.0 beta 1.

В старых версиях BIND и PowerDNS публикация CAA записей возможна в формате "неизвестная запись" ("unknown record" format, RFC 3597) с типом "TYPE257".

В качестве удобного способа для того, чтобы сформировать корректные DNS-записи типа CAA можно воспользоваться онлайн мастером от SSLmate.

Добавление CAA записи

В левом меню в разделе "Домены" выберите пункт "Доменные имена", затем в списке доступных доменов выделите необходимый и нажмите на кнопку "записи". Далее на странице "Управление записями домена" нажмите на кнопку "Создать", затем в типе записи выберите "CAA (авторизованный центр сертификации)".

Создание CAA записи

Ресурсная запись CAA состоит из байта флагов (flags byte) и пары тег-значение (tag-value), называемой свойством. Несколько свойств могут быть связаны с одним и тем же доменным именем, при публикации нескольких CAA записей в данном доменном имени.

Флаги (Flags)

Бит флагов может принимать или 0, или 128. В случае задания для флагов значения 128 определяется критический бит для центров сертификации. Если он не знает тег данной записи, т.е. не знает как обрабатывать запись с используемым в ней тегом, то такой центр сертификации не имеет права выпускать сертификаты.

Значение 0 у флагов в CAA записи позволяет центру сертификации на свое усмотрение принимать решение на выпуск сертификата, даже если он не распознал в CAA записи содержание тега.

Тег (Tag)

Для тега CAA записи определено 3 значения: issue, issuewild и iodef

  • issue — разрешает владельцу доменного имени, указанного в значении свойства записи, или стороне, действующей под явным полномочием владельца этого доменного имени, выдавать сертификаты для домена, в котором опубликовано это свойство.
  • issuewild — разрешает владельцу доменного имени, указанного в значении свойства записи, или стороне, действующей под явным полномочием владельца этого доменного имени, выдавать wildcard сертификаты для домена, в котором опубликовано это свойство.
  • iodef — в значении свойства позволяет указать email адрес или URL адрес, по которому издатель сертификатов может сообщать о проблемах с сертификатом, которые не соответствуют правилам сертификации или политике сертификации издателя, или эксперт по проверке сертификатов может использовать для уведомления о возможном нарушении правил. Для URL адресов используется формат обмена сообщений IODEF (The Incident Object Description Exchange Format, RFC 5070). Этот тег позволит владельцу домена определить адрес электронной почты или URL, куда центры сертификации должны будут отправлять уведомления о подозрительных запросах на сертификаты.

Значение (Value)

  • При использовании тегов issue и issuewild в значении CAA записи указывается доменное имя центра сертификации. После имени домена через ; можно указывать дополнительные параметры. Например, центр сертификации ca.example.net попросил своего клиента указать номер учетной записи (account) равный 230123, тогда значение CAA записи будет ca.example.net; account=230123. Указание только ; в значении CAA записи запрещает всем центрам сертификации выдачу сертификатов.
  • При использовании тега iodef в значении CAA записи указываются Email или URL-адрес страницы обратной связи. Здесь добавлять дополнительные параметры нельзя.

Примеры и нюансы

Использование критического бита в флагах

Критический бит в флагах CAA записей предназначен, чтобы позволить будущим версиям CAA включать новую семантику, которая должна быть обязательно понята для правильной обработки записи, не допуская выдачу сертификатов центрами сертификации, которые не признают новую семантику.

В следующем примере запись с тегом tbs помечено как критическое:

$ORIGIN example.com
.       CAA 0 issue "ca.example.net; policy=ev"
.       CAA 128 tbs "Unknown"

Ни ca.example.net, ни какой-либо другой центр сертификации не имеют права выпускать сертификаты, если они не знают как правильно обрабатывать запись с тегом tbs

Необходимо отметить, что указанные ограничения применяются только при выдаче сертификата. Поскольку срок действия сертификата обычно составляет год или более, вполне возможно, что CAA записи могут измениться после выдачи сертификата. Изменения не отразятся на действующий сертификат, но могут повлиять на валидацию домена сторонними лицами.

Проверка выдачи DNS-сервером CAA записей

Выполнить проверку можно с помощью утилиты dig:

dig example.com caa

Ссылки

1. RFC 6844: DNS Certification Authority Authorization (CAA) Resource Record

2. RFC 3597: Handling of Unknown DNS Resource Record (RR) Types

3. RFC 5070: The Incident Object Description Exchange Format

4. [cabfpub] Ballot 187 - Make CAA Checking Mandatory

5. CAA Record Generator by SSLMate