CAA (Certification Authority Authorization – авторизация центров сертификации), определенная в RFC 6844 в 2013 г., была предложена, чтобы усилить экосистему PKI (Public Key Infrastructure) при помощи нового средства контроля за тем, какой именно центр сертификации может выдавать сертификат данному конкретному домену.
Несмотря на то, что САА введена уже более 4 лет назад, она все еще мало известна сегодня, и на данный момент только 100 или, может быть, около 200 сайтов ее используют. Однако предстоят значительные перемены, потому что форум центров сертификации и разработчиков браузеров (форум CA/Browser) утвердил CAA в качестве обязательной – в рамках стандартного набора базовых условий для выпуска сертификата безопасности. Новая норма начнет действовать с сентября 2017 года.
Возможность выпуска сертификата безопасности любым сертификационным центром (СА) для любого домена неоднократно указывалась как наиболее слабое место экосистемы PKI. Несмотря на то, что центры сертификации должны действовать не нарушая неких общих правил, до сих пор нет средств технического контроля за тем, что они делают. Отсюда возникает некое слабое звено в системе, а при наличии сотен CA – таких звеньев, соответственно, сотни.
САА создает механизм, позволяющий владельцам доменов создавать на уровне DNS-записей белые списки центров, которым они разрешают выдавать сертификаты для своего домена. Для этого вводится новая ресурсная DNS-запись, САА (тип 257). Владелец домена ограничивает выдачу сертификатов, указывая явно адрес центра сертификации в этой записи.
Например, вот таким образом:
example.org. CAA 128 issue "letsencrypt.org"
И это всё. Перед тем как выпустить сертификат для какого-нибудь домена, СА проверяет его ресурсную DNS-запись CAA, и выпускает сертификат только в том случае, если находит там свой адрес. В дополнение к директиве «issue» из вышеприведенного примера, есть еще директива «issuewild», ограничивающая выпуск расширенных wildcard-сертификатов, и директива «iodef», которая содержит URL, по которому СА может обратиться, если что-то происходит неправильно – в смысле политики сертификации или технических проблем. (128 – это контрольный байт с установленным старшим битом, указывающий на то, что данная директива критически важна и должна исполняться безусловно).
С некоторой точки зрения САА выполняет почти ту же функцию, что и HPKP (HTTP Public Key Pinning — прикрепление публичных ключей HTTP), но несколько иным образом. Во-первых, САА предотвращает выпуск сертификата, в то время как HPKP осуществляет проверку на стороне клиента во время исполнения, определяя уже выпущенные сертификаты как валидные или не валидные.
Во-вторых, HPKP – для браузеров, а CAA – для центров сертификации. HPKP, дающая список ключей, средство технического контроля, в то время как САА осуществляет, скорее, административный контроль. Да, ожидается, что при несоответствии САА-записи центр сертификации прекращает выдачу сертификата, но ведь центр сертификации может переключиться в ручной режим и принять решение о выпуске, если запрос будет признан все-таки подлинным. И да, это опять сложность – центров сертификации много, и самая главная проблема для них – противостоять неким «социальным» факторам давления и все же выполнять некие формальные правила в случае несоответствия САА-записей.
Но говорить, что САА бесполезна или пересекается с HPKP – не стоит. Тут есть определенные преимущества, в частности, по сравнению с HPKP у САА меньше возможностей для злоупотребления и нарушения прав собственности в онлайн-пространстве.
HPKP при неверном функционировании может полностью разрушить ваш веб-бизнес, а САА будет только слегка раздражать, если что-то пойдет не так.
И кроме того, «прикрепление публичных ключей для подтверждения владения веб-ресурсом» пугает потенциальных пользователей HPKP своей сложностью и громоздкостью, по сравнению с простотой DNS-записи CAA.
Проверить наличие САА-записи можно при помощи любого онлайн-сервиса, анализирующего состав записей DNS для публичных доменов.
Комментарии (13)
navion
23.05.2017 15:51+2Генератор CAA-записей, но не все провайдеры их поддерживают. Кто-нибудь в курсе почему не сделали валидацию через обычные TXT?
Stalker_RED
23.05.2017 18:43Простите мое невежество, но что такое «валидация через обычные TXT»?
navion
23.05.2017 19:11+1Писать разрешенные CA в TXT-запись (как сделано для SPF), а не созавать новый тип ради которого хостерам придётся дорабатывать панели.
kilgur
23.05.2017 19:12+3Наверное, имеется в виду что-то типа:
_caa IN TXT issue "letsencrypt.org".
Т.е. без введения нового типа записей (CAA).kinoz
23.05.2017 22:11Нет, если верить генератору из комментария выше, это именно новый тип.
Если верить этому генератору, то список dns серверов довольно обширен, а панели, я думаю не так много работы по внедрению нового типа записей.
alkoro
23.05.2017 22:11Странно, что для клиентов (браузеров) не указан очевидный путь для дополнительной проверки надёжности — сверять соответствие CAA-записи и издателя сертификата.
NaHCO3
23.05.2017 23:09Ок. Будем ещё подменять DNS.
sunnybear
23.05.2017 23:17DNSSEC пока не научились подделывать. Ждем волны взломов корневых DNS.
NaHCO3
24.05.2017 07:07DNSSEC весьма опциональный. И вряд ли это изменится. Так что можно рассчитывать, что в целевом браузере он будет отключён.
amarao
24.05.2017 11:44DNSSEC обладает безопасностью неуловимого Джо. С практической точки зрения мы просто делаем DNS downgrade attack и все широкоиспользуемые клиенты соглашаются с тем, что «так и надо».
Caravus
То есть «может выдать, а может не выдать»? В чём тогда смысл?