DNS-запись CAA. Зачем нужна и как использовать?

  • Tutorial
CAA (Certification Authority Authorization) — это новый тип DNS-записи, предназначенный для определения центров сертификации, которым разрешен выпуск SSL/TLS-сертификатов для определенного доменного имени или субдомена.

Крупнейшие и наиболее популярные центры сертификации договорились, что начиная с 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-записей.
Share post

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 26

    +1
    Это работает только с DNSSEC?
      0
      Можно использовать и без DNSSEC. В RFC 6844 он носит рекомендательный характер.
        0
        Эта запись нужна центру сертификации для проверки того, что он (центр сертификатов) имеет права выпустить сертификат. К DNSSEC, это, кажется, вообще не имеет никакого отношения.
        +1
        Как будут реагировать браузеры если у сайта нет САА?
          0
          На момент моих изысканий на этот счёт, я не нашёл какой либо причины браузеру проверять эти записи. Ну то есть, эта запись нужна только УЦ и только в МОМЕНТ выпуска серта.

          Браузер может её проверить, но в RFC не говорится, что ему делать в том случае если запись не нашлась, а серт валидный.
            0
            Эта запись только для центра сертификации. Браузер не взаимодействует с ней.
              0
              Кажется, я написал тоже самое =)
                +1
                а какой в этом смысл? если кто-то захочет выпустить сертификат для домена, то он его выпустит не глядя на caa.
                по-моему как раз браузер должен сравнивать — кто должен был выпустить и кто реально выпустил и при несовпадении считать сертификат невалидным.
                  0
                  А как вы его выпустите без участия центра сертификации?
                  Основная идея как раз в том, чтобы в итоге все центры сертификации проверяли САА в дополнении к существующим способам проверки (почта, веб-сайт, документы).
                    0
                    если кто-то захочет выпустить сертификат для домена, то он его выпустит не глядя на caa.

                    Это механизм проверки для добросовестных УЦ, а не для злонамеренных.


                    по-моему как раз браузер должен сравнивать

                    Для браузеров предназначен другой тип записей — TLSA.

                      0

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

                        0

                        Вообще, DANE предназначен для верификации клиентским софтом. Если говорить о браузерах, то ни один из них его не поддерживает. Да и вообще с поддержкой DANE очень плохо.

                    0
                    Поправка. Нужна Вам и не только в момент легитимного выпуска сертификата. А для того чтобы злодеи не выпустили через другой CA левый сертификат.
                      +1
                      если СА позволяет злодеям выпускать сертификат для чужого домена, то кто гарантирует, что он будет смотреть на какие-то записи в днс?
                      разве смысл существования СА не в том, чтобы проверить является ли проситель сертификата владельцем сертифицируемого ресурса?
                  0
                  Ну и сошлю на свою заметку на этот счёт, мало ли мой формат изложения кому-то зайдёт. telegra.ph/CHto-takoe-DNS-Certification-Authority-Authorization-08-10
                    +1
                    Будут ли отозваны сертификаты, если центр сертификации пропадет из правил в CAA?
                      0
                      Нет, CAA-запись нужна и проверяется только в момент выдачи сертификата.
                      +1
                      Каждый центр сертификации, начиная с 8 сентября 2017 года будет обязан строго следовать инструкциям, указанным в CAA-записях доменного имени или субдомена для которого запрашивается выпуск сертификата.

                      Вовсе не каждый. Просто ассоциация крупнейших УЦ договорилась, что ее члены в обязательном порядке будут следовать стандарту, описанному в RFC 6844. Указанный RFC имеет статус Proposed standard, обязательным не является, и это решение не имеет никакой силы для УЦ, не входящих в эту ассоциацию.

                        0
                        Да, вы правы, внес корректировки в статью. Спсб.
                        0
                        Есть информация, как это будет работать с Let's Encrypt?
                        Возможно, уже есть готовые примеры записей, разрешающие выпуск этих сертификатов для своих доменов?
                          0
                          Да, вот тоже интересует вопрос, как это работает с системами автоматический выдачи ACME, как, например, у Let's Encrypt? Там ведь проверка через TXT
                            0
                            Да, никакого противоречия нет, они будут сначала проверять наличие CAA-записей, а потом приступать к процедуре выдачи по ACME, если центру не разрешено выдать сертификат, он сообщит ошибкой urn:ietf:params:acme:error:caa
                            0
                            example.com. IN CAA 0 issue «letsencrypt.org»
                            0

                            А как будет это работать в случае отсутствие CAA записей? Так же, как и прежде?

                            0
                            Cloudflare заявляет о поддержке, но при попытке добавить уже месяц выдает такое сообщение
                            CAA records are currently in beta. Please open a support ticket to request access to the beta. (Code: 1039)

                            Only users with full accounts can post comments. Log in, please.