Битлента
Словарь терминов3 мин чтения·

Цепочка доверия: как браузер проверяет сертификат сайта

Сертификат сайта не проверяется в одиночку: он ведёт через промежуточные к корню. Как строится путь доверия и почему возникает ошибка неполной цепочки.

Три звена вместо одного

Сертификат сайта, так называемый конечный, обычно подписан не корневым центром, а промежуточным. Промежуточный, в свою очередь, подписан корнем. Получается цепочка из трёх звеньев: сертификат сайта, один или несколько промежуточных и корневой. Проверка состоит в том, чтобы пройти по подписям вверх до сертификата, который уже лежит в хранилище доверия устройства.

Почему нельзя подписывать сайты прямо корнем? Корневой закрытый ключ слишком ценен. Его хранят в изолированных помещениях и достают редко. Если промежуточный ключ утечёт, его можно отозвать, не заменяя корень на миллионах устройств.

Как проходит проверка

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

Затем оценивается статус отзыва через списки CRL или протокол OCSP, хотя браузеры относятся к этому по-разному. Если хотя бы одно звено не проходит проверку, соединение считается небезопасным и пользователь видит предупреждение.

Про роль организаций, которые подписывают эти звенья, рассказано в статье о центре сертификации.

Типичная ошибка: неполная цепочка

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

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

Вторая распространённая причина ошибки: истёк срок действия одного из звеньев или на устройстве неверно выставлены дата и время.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Перекрёстная подпись и устаревшие корни

Новые центры сертификации сталкиваются с проблемой: их корень ещё не попал в старые устройства. Решение — перекрёстная подпись, когда промежуточный сертификат нового центра дополнительно подписывается корнем уже известного центра. Старое устройство идёт по одной ветке, новое по другой. Известно, что подобная схема помогла Let's Encrypt быть принятым на ранних этапах.

Обратная сторона в том, что корни имеют срок жизни. Когда истекает старый корневой сертификат, устройства без обновлений хранилища перестают доверять сайтам, которые от него зависят. Для старых телефонов и приставок это заметная проблема.

Как посмотреть цепочку самому

В Chrome, Firefox и Safari откройте сведения о сертификате из меню возле замка. Там есть вкладка с иерархией, где видны все звенья. В командной строке openssl s_client -connect имя:443 -showcerts выведет сертификаты, которые отдаёт сервер, а сообщение verify return подскажет, удалось ли проверить путь.

Если клиент сообщает про неизвестного издателя, а браузер молчит, сначала проверьте комплектность цепочки на сервере. Онлайн-сервисы проверки SSL показывают недостающие промежуточные. О безопасности всего соединения говорит и страница про HTTPS.

Список отозванных и время

Проверка цепочки зависит от времени. Сертификат действителен только между датами начала и окончания, поэтому устройство с неправильными часами отвергнет даже совершенно корректную цепочку. Для подписанных файлов важно, когда была поставлена подпись, а не когда её проверяют. Отзыв тоже неоднороден: списки CRL бывают большими и обновляются редко, а запросы OCSP добавляют задержку и раскрывают центру, какие сайты вы посещаете, поэтому браузеры применяют собственные сжатые списки и прикрепление ответа сервером. Если вы видите ошибку отзыва в корпоративной сети, часто виной оказывается фильтр, блокирующий обращение к службе проверки. Проверьте, доступны ли адреса из полей сертификата, и не расходятся ли часы устройства с реальным временем.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
сертификатыtlspki

Часто задаваемые вопросы

Читайте также