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-записей.

Комментарии (26)


  1. pixelcube
    30.08.2017 12:25
    +1

    Это работает только с DNSSEC?


    1. mnasonov Автор
      30.08.2017 12:29

      Можно использовать и без DNSSEC. В RFC 6844 он носит рекомендательный характер.


    1. cooladmin
      30.08.2017 12:32

      Эта запись нужна центру сертификации для проверки того, что он (центр сертификатов) имеет права выпустить сертификат. К DNSSEC, это, кажется, вообще не имеет никакого отношения.


  1. Nappo
    30.08.2017 12:36
    +1

    Как будут реагировать браузеры если у сайта нет САА?


    1. cooladmin
      30.08.2017 12:37

      На момент моих изысканий на этот счёт, я не нашёл какой либо причины браузеру проверять эти записи. Ну то есть, эта запись нужна только УЦ и только в МОМЕНТ выпуска серта.

      Браузер может её проверить, но в RFC не говорится, что ему делать в том случае если запись не нашлась, а серт валидный.


      1. mnasonov Автор
        30.08.2017 12:43

        Эта запись только для центра сертификации. Браузер не взаимодействует с ней.


        1. cooladmin
          30.08.2017 12:44

          Кажется, я написал тоже самое =)


        1. alexxisr
          30.08.2017 16:26
          +1

          а какой в этом смысл? если кто-то захочет выпустить сертификат для домена, то он его выпустит не глядя на caa.
          по-моему как раз браузер должен сравнивать — кто должен был выпустить и кто реально выпустил и при несовпадении считать сертификат невалидным.


          1. mnasonov Автор
            30.08.2017 16:27

            А как вы его выпустите без участия центра сертификации?
            Основная идея как раз в том, чтобы в итоге все центры сертификации проверяли САА в дополнении к существующим способам проверки (почта, веб-сайт, документы).


          1. ildarz
            30.08.2017 16:37

            если кто-то захочет выпустить сертификат для домена, то он его выпустит не глядя на caa.

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


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

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


            1. tankistua
              30.08.2017 23:42

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


            1. mxms
              31.08.2017 21:22

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


      1. yurror
        31.08.2017 11:01

        Поправка. Нужна Вам и не только в момент легитимного выпуска сертификата. А для того чтобы злодеи не выпустили через другой CA левый сертификат.


        1. alexxisr
          31.08.2017 12:10
          +1

          если СА позволяет злодеям выпускать сертификат для чужого домена, то кто гарантирует, что он будет смотреть на какие-то записи в днс?
          разве смысл существования СА не в том, чтобы проверить является ли проситель сертификата владельцем сертифицируемого ресурса?


  1. cooladmin
    30.08.2017 12:36

    Ну и сошлю на свою заметку на этот счёт, мало ли мой формат изложения кому-то зайдёт. telegra.ph/CHto-takoe-DNS-Certification-Authority-Authorization-08-10


  1. KrondorTheGreat
    30.08.2017 12:48
    +1

    Будут ли отозваны сертификаты, если центр сертификации пропадет из правил в CAA?


    1. mnasonov Автор
      30.08.2017 12:49

      Нет, CAA-запись нужна и проверяется только в момент выдачи сертификата.


  1. ildarz
    30.08.2017 13:40
    +1

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

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


    1. mnasonov Автор
      30.08.2017 14:20

      Да, вы правы, внес корректировки в статью. Спсб.


  1. skymal4ik
    30.08.2017 13:43

    Есть информация, как это будет работать с Let's Encrypt?
    Возможно, уже есть готовые примеры записей, разрешающие выпуск этих сертификатов для своих доменов?


    1. pixelcube
      30.08.2017 13:45

      Да, вот тоже интересует вопрос, как это работает с системами автоматический выдачи ACME, как, например, у Let's Encrypt? Там ведь проверка через TXT


      1. mnasonov Автор
        30.08.2017 13:51

        Да, никакого противоречия нет, они будут сначала проверять наличие CAA-записей, а потом приступать к процедуре выдачи по ACME, если центру не разрешено выдать сертификат, он сообщит ошибкой urn:ietf:params:acme:error:caa


    1. mnasonov Автор
      30.08.2017 13:50

      example.com. IN CAA 0 issue «letsencrypt.org»


  1. SirEdvin
    30.08.2017 14:35

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


    1. mnasonov Автор
      30.08.2017 14:37

      Да


  1. mureevms
    30.08.2017 17:07

    Cloudflare заявляет о поддержке, но при попытке добавить уже месяц выдает такое сообщение

    CAA records are currently in beta. Please open a support ticket to request access to the beta. (Code: 1039)