CAA-запись (Certification Authority Authorization) — это DNS Lookup, которая указывает, каким удостоверяющим центрам (CA) разрешено выпускать SSL/TLS-сертификаты для вашего домена. Если CAA задана, любой CA обязан проверить её перед выпуском и отказать, если он в ней не перечислен. Это защита от ошибочного или мошеннического выпуска сертификатов.
В этой статье разберём назначение CAA, синтаксис тегов issue, issuewild и iodef, готовые примеры для Let's Encrypt и коммерческих CA, обязательность проверки центрами и способы диагностики.
Что такое CAA-запись и зачем она нужна
CAA описана в RFC 8659. С сентября 2017 года проверка CAA стала обязательной для всех публичных удостоверяющих центров по правилам CA/Browser Forum. Без CAA-записи любой CA может выпустить сертификат на ваш домен; с ней круг допустимых центров ограничен списком, который контролируете вы.
Практический смысл: если злоумышленник или ошибочный процесс попытается получить сертификат в стороннем CA, тот увидит вашу CAA и откажет. А тег iodef позволяет получать уведомления о таких попытках.
Синтаксис CAA: теги issue, issuewild, iodef
Запись состоит из флага (обычно 0), тега и значения. Три основных тега:
| Тег | Назначение | Пример значения |
|---|---|---|
issue | Какой CA может выпускать обычные сертификаты | letsencrypt.org |
issuewild | Какой CA может выпускать wildcard-сертификаты (*.example.com) | digicert.com |
iodef | Куда сообщать о нарушениях политики (email/URL) | mailto:security@example.com |
Примеры CAA-записей
Разрешить выпуск только через Let's Encrypt и слать отчёты на почту:
example.com. IN CAA 0 issue "letsencrypt.org"
example.com. IN CAA 0 iodef "mailto:security@example.com"Разрешить обычные сертификаты через Let's Encrypt, а wildcard — только через DigiCert:
example.com. IN CAA 0 issue "letsencrypt.org"
example.com. IN CAA 0 issuewild "digicert.com"Полностью запретить выпуск любых сертификатов (пустое значение issue):
example.com. IN CAA 0 issue ";"Как проверить CAA-запись домена
Через dig:
dig CAA example.com +shortЕсли ответ пустой — CAA не задана, и выпускать сертификаты может любой CA. Проверить все DNS-записи домена, включая CAA, можно бесплатным инструментом проверки DNS-записей enterno.io, а корректность самого сертификата — проверкой SSL-сертификата.
Частые ошибки
- CAA на неправильном уровне. Запись ищется от точного имени вверх по дереву; для
www.example.comсработает CAA наexample.com, если своей нет. - Забыт issuewild. Если задан только
issue, для wildcard берётся он же; но если вы отдельно указалиissuewild, он полностью заменяетissueдля wildcard. - Неверное имя CA. Значение должно точно совпадать с идентификатором CA (например,
letsencrypt.org, а неLet's Encrypt).
Частые вопросы
Обязательна ли CAA-запись?
Нет, наличие CAA не обязательно, но настоятельно рекомендуется. Без неё любой публичный CA вправе выпустить сертификат на ваш домен. С CAA вы явно ограничиваете список доверенных центров, снижая риск несанкционированного выпуска.
Замедляет ли CAA выпуск сертификата?
Практически нет. CA делает один дополнительный DNS-запрос CAA перед выпуском. Это доли секунды и не влияет на скорость получения сертификата через ACME или ручную выдачу.
Что произойдёт, если сменить CA?
Перед переходом на нового удостоверяющего центра добавьте его в тег issue (и при необходимости issuewild). Иначе новый CA получит отказ на этапе проверки CAA и не сможет выпустить сертификат.
Поддерживают ли CAA все DNS-провайдеры?
Большинство современных DNS-хостингов поддерживают тип CAA. Если ваш провайдер его не поддерживает, используйте DNS с поддержкой CAA — иначе задать политику выпуска не получится.
Как получать уведомления о нарушениях?
Добавьте тег iodef со значением mailto: или https://. При попытке выпуска вопреки политике поддерживающий CA отправит отчёт по указанному адресу. Поддержка iodef зависит от конкретного центра.