Что такое CAA-запись?
CAA (Certification Authority Authorization) ограничивает удостоверяющие центры, которым разрешено выпускать сертификаты для домена. Запись снижает риск ошибочной выдачи, но не заменяет защиту DNS и контроль аккаунта.
Почему CAA важна
CAA позволяет явно указать разрешённые CA и канал отчётности. Отсутствие CAA обычно означает, что CA не ограничен этой политикой.
Как работает CAA
Обязательная проверка CA
CA должен проверить CAA перед выпуском и отказать, если его идентификатор не разрешён. Ошибка DNS или неизвестный ответ требует отдельного разбора.
Формат CAA-записи
example.com. IN CAA 0 issue "letsencrypt.org"
Теги свойств
Чаще всего используются issue, issuewild и iodef. Значение определяет CA или URI для отчёта.
| Тег | Назначение | Пример |
|---|---|---|
| issue | Разрешить CA для всех сертификатов | issue "letsencrypt.org" |
| issuewild | Разрешить CA для wildcard-сертификатов | issuewild "digicert.com" |
| iodef | Сообщать о несанкционированных попытках | iodef "mailto:[email protected]" |
Примеры CAA-записей
Один CA (только Let's Encrypt)
Разрешите конкретный CA и отдельно решите, допускаются ли wildcard-сертификаты.
example.com. CAA 0 issue "letsencrypt.org"
Несколько CA
Добавьте только подтверждённых поставщиков, иначе политика может быть шире ожидаемого.
example.com. CAA 0 issue "letsencrypt.org"
example.com. CAA 0 issue "digicert.com"
example.com. CAA 0 issue "sectigo.com"
Ограничение wildcard
issuewild можно использовать для отдельного контроля wildcard-выпуска.
example.com. CAA 0 issue "letsencrypt.org"
example.com. CAA 0 issuewild "digicert.com"
Запрет всех сертификатов
Пустое значение issue запрещает выпуск, пока не добавлена явная политика исключения.
example.com. CAA 0 issue ";"
С отчётностью
iodef указывает URI для уведомлений, но не гарантирует доставку расследований.
example.com. CAA 0 issue "letsencrypt.org"
example.com. CAA 0 iodef "mailto:[email protected]"
Распространённые идентификаторы CA
Сверяйте точный идентификатор с документацией CA, учитывая регистр, формат и актуальную политику.
| CA | Идентификатор |
|---|---|
| Удостоверяющий центр Let's Encrypt | letsencrypt.org |
| Удостоверяющий центр DigiCert | digicert.com |
| Удостоверяющий центр Sectigo (Comodo) | sectigo.com |
| Удостоверяющий центр GlobalSign | globalsign.com |
| Удостоверяющий центр GoDaddy | godaddy.com |
| Удостоверяющий центр Amazon | amazon.com |
| Удостоверяющий центр Google Trust Services | pki.goog |
Внедрение CAA-записей
Через DNS-провайдера
Создайте CAA в авторитетной зоне, проверьте TTL, делегацию и результат из нескольких резолверов.
Через файл зоны
Синтаксис должен соответствовать зоне, serial нужно увеличить, а изменения проверить до удаления старой политики.
; Allow Let's Encrypt and DigiCert
@ IN CAA 0 issue "letsencrypt.org"
@ IN CAA 0 issue "digicert.com"
@ IN CAA 0 iodef "mailto:[email protected]"
Наследование CAA
CAA действует по правилам DNS-зоны и может распространяться на имена без собственной записи. Проверяйте точный hostname и wildcard отдельно.
example.com. CAA 0 issue "letsencrypt.org" ; Applies to all
api.example.com. CAA 0 issue "digicert.com" ; Override for api
Проверка CAA-записей
Используйте dig, RDAP, authoritative NS и документацию CA, сохраняя timestamp и полный ответ.
dig example.com CAA
; ANSWER SECTION:
example.com. 300 IN CAA 0 issue "letsencrypt.org"
curl "https://domscan.net/v1/health?domain=example.com"
# Reports hasCAA in security details
Лучшие практики CAA
Документируйте владельца, используйте минимальный список CA, настройте отчётность, мониторьте изменения и тестируйте продление сертификатов.
Частые проблемы CAA
Ошибки включают неверный идентификатор, отсутствующий issue, конфликт wildcard, stale cache, DNSSEC/SERVFAIL и непроверенный URI отчёта.