Глоссарий / Справочник разработчика
Корневой сертификат
- Что такое корневой сертификат?
- Корневой сертификат представляет собой самоподписанный якорь доверия в вершине цепочки сертификатов, и ему доверяют только потому, что его включил производитель вашей операционной системы или браузера.
Любая проверка сертификата заканчивается на корневом сертификате. Корневой сертификат подписывает сам себя, и ему доверяют только потому, что он поставлялся в хранилище корневых сертификатов вашего устройства; DST Root CA X3, самый известный пример, был выпущен 30 сентября 2000 года и истек ровно через 21 год. Если вы судите о бирже только по замку в адресной строке, вы доверяете этому списку корневых сертификатов, а не чему-либо, относящемуся к самой бирже.
Как это работает
Корневой сертификат называет одну и ту же организацию и в поле издателя, и в поле субъекта, а ключ, которым он подписан, является тем ключом, который он удостоверяет. В этой замкнутости и состоит суть. Над корневым сертификатом нет ничего, что могло бы за него поручиться, поэтому проверяющая сторона не может сверить его с чем-то вышестоящим; она может лишь найти сертификат в локальном списке и считать этот список источником истины.
Эти списки составляют несколько компаний. Apple, Microsoft, Mozilla и Google каждая ведет программу корневых сертификатов с опубликованными критериями включения, требованиями к аудиту и процедурами исключения, а хранилище на вашем ноутбуке или смартфоне является тем, которое производитель поставил вместе с программным обеспечением. Включение длится очень долго, потому что изъятие корневого сертификата означает выпуск обновления для каждого устройства, где он хранится. ISRG Root X1, якорь доверия Let's Encrypt, был выпущен 4 июня 2015 года и не истекает до 4 июня 2035 года.
Структурная слабость состоит в том, что любой корневой сертификат в хранилище может поручиться за любое имя. Ни одно правило не привязывает нидерландский удостоверяющий центр к нидерландским доменам, поэтому один скомпрометированный центр подрывает доверие ко всем сайтам сразу. DigiNotar доказал это в 2011 году: злоумышленник выпустил мошеннический сертификат для google.com 10 июля того года и использовал его для перехвата трафика иранских пользователей. Mozilla, Google и Microsoft изъяли корневые сертификаты DigiNotar в первые дни сентября 2011 года, и компания обанкротилась до конца месяца.
Где это встречается
Корневые сертификаты вошли в биткоин через BIP70, который требовал от кошельков проверять цепочку сертификатов продавца вплоть до доверенного корневого сертификата, прежде чем показывать название компании на экране оплаты. Настольное программное обеспечение для этого заимствовало хранилище операционной системы, мобильное программное обеспечение часто делало это неправильно, а Bitcoin Core полностью удалил эту функцию в версии 0.20.0. Справочник для разработчиков на bitcoin.org по-прежнему перечисляет этот термин, и именно поэтому его сейчас в основном и ищут.
Полезнее сравнить это с собственным якорем биткоина. Полный узел начинает с блока генезиса, датированного 3 января 2009 года, жестко заданного в программном коде, и от него проверяет каждое правило самостоятельно. Никто не добавляет запись в этот якорь, отправляя обновление на ваш смартфон, и никакую инстанцию нельзя взломать или принудить поручиться за блок, нарушающий правила. Хранилища корневых сертификатов работают в противоположном направлении: доверие идет сверху вниз из списка, который написали не вы и который вы не можете проверить.
Корневой сертификат vs конечный сертификат
Корневой сертификат удостоверяет удостоверяющий центр; конечный сертификат удостоверяет сервер. Корневой сертификат самоподписан, живет два десятилетия и хранит свой приватный ключ в офлайн-аппаратном модуле, который достают несколько раз в год при свидетелях. Конечный сертификат содержит имя хоста, к которому вы фактически подключились, живет месяцами, а его приватный ключ находится на работающем веб-сервере, доступном из интернета. Люди говорят «сертификат действителен», когда имеют в виду, что конечный сертификат удалось разобрать и даты совпадают, но вопрос, определяющий, заслуживает ли соединение доверия, состоит в том, на каком корневом сертификате заканчивается цепочка.