В публичной инфраструктуре ключей (PKI) доверие к конечному (листовому) сертификату формируется через цепочку сертификатов. На вершине этой цепочки находится доверенный корневой сертификат, а между ним и листовым сертификатом могут находиться один или несколько промежуточных сертификатов. Понимание их ролей помогает правильно настроить TLS/HTTPS, избежать ошибок валидации и выбрать подходящий тип сертификата для своей инфраструктуры.
Что такое доверенный корневой сертификат
Доверенный корневой сертификат – это самоподписанный (self‑signed) сертификат, который находится в доверенном хранилище операционной системы, браузера или другого программного обеспечения. Он не подписан никакой другой стороной; его подлинность подтверждается тем, что он уже включён в список доверенных корней.
Корневые сертификаты издаются аккредитованными центрами сертификации (Certificate Authority, CA) и проходят строгий аудит перед включением в доверительные хранилища. Примеры: DigiCert Global Root G2, ISRG Root X1 (Let’s Encrypt), GlobalSign Root CA. После установки в ОС или браузер они становятся точкой доверия: любой сертификат, чья цепочка ведёт к одному из этих корней, считается доверенным, если все промежуточные подписи корректны и не отозваны.
Что такое промежуточный сертификат
Промежуточный сертификат выдаётся тем же центром сертификации (или его подчинённой организацией) и подписан либо корневым сертификатом, либо другим промежуточным сертификатом, стоящим выше в иерархии. Он сам по себе не доверен: программы проверки не ищут его в хранилище доверенных корней, а используют его только как часть цепочки при валидации листового сертификата.
Основная причина использования промежуточных сертификатов – разделение ответственности и повышение безопасности. Корневой ключ хранится в офлайне, а промежуточные ключи могут находиться на онлайн‑серверах, отвечая за выдачу сертификатов конечным пользователям. Если промежуточный ключ скомпрометирован, можно отозвать только его, не затрагивая корневой ключ.
Ключевые различия
Ниже перечислены основные аспекты, в которых корневой и промежуточный сертификаты различаются.
- Самоподписанность: корневой сертификат всегда самоподписан; промежуточный подписан более высоким сертификатом (корневым или другим промежуточным).
- Доверие по умолчанию: корневой сертификат уже включён в доверительные хранилища ОС и браузеров; промежуточный не доверен сам по себе и проверяется только как часть цепочки.
- Хранение ключа: корневой закрытый ключ обычно хранится в офлайне (HSM, воздушно‑изолированные системы); промежуточный ключ может находиться на онлайн‑серверах CA для выдачи сертификатов.
- Срок действия: корневые сертификаты часто выдаются на длительный период (10–20 лет и более); промежуточные имеют более короткий срок (обычно несколько лет), чтобы упростить их замену при необходимости.
- Отзыв: отзыв корневого сертификата приводит к массовым проблемам доверия и требует обновления хранилищ всех клиентов; отзыв промежуточного затрагивает только те сертификаты, которые были им подписаны, и проще обрабатывается через CRL или OCSP.
- Количество в цепочке: в минимальной цепочке присутствует один корневой и один листовой сертификат; промежуточных может быть ноль, один или несколько, в зависимости от структуры CA.
Как работает цепочка доверия
Когда браузер получает листовой сертификат (например, для сайта example.com), он выполняет следующие шаги:
- Проверяет подпись листового сертификата с использованием открытого ключа из следующего сертификата в цепочке.
- Если следующий сертификат – промежуточный, повторяет проверку его подписи с использованием открытого ключа из следующего сертификата.
- Процесс продолжается до тех пор, пока не достигнут сертификат, который находится в доверительном хранилище (корневой).
- Если цепочка завершилась доверенным корнем и все подписи верны, а ни один из сертификатов не отозван, браузер считает соединение доверенным.
Если в цепочке отсутствует хотя бы один промежуточный сертификат, который необходим для связывания листового с корневым, проверка прерывается с ошибкой «untrusted certificate» или «certificate chain incomplete». Поэтому при установке SSL на сервер важно предоставить полную цепочку: листовый сертификат + все необходимые промежуточные.
Практическое применение и настройка
Приобретая SSL‑сертификат у коммерческого CA или получая бесплатный от Let’s Encrypt, вы обычно получаете два файла:
- листовой сертификат для вашего домена;
- файл с промежуточными сертификатами (иногда называемый bundle или ca-bundle).
Для корректной работы HTTPS сервера (Nginx, Apache, IIS и т.д.) необходимо:
- Указать путь к листовому сертификату (ssl_certificate в Nginx, SSLCertificateFile в Apache).
- Указать путь к файлу с промежуточными сертификатами (ssl_trusted_certificate в Nginx, SSLCertificateChainFile в Apache).
- Убедиться, что доверенный корневой сертификат уже присутствует в хранилище ОС или браузера клиента (обычно так и есть для общедоступных CA).
Если промежуточный сертификат omitted, клиенты могут построить цепочку только до промежуточного, который им неизвестен, и посчитают соединение непроверенным. В то же время лишние или неправильные промежуточные сертификаты не ломают цепочку, но могут увеличить размер рукопожатия.
Ограничения и нюансы
Несмотря на чёткое разделение ролей, на практике встречаются ситуации, которые стоит учитывать:
- Некоторые тестовые или корпоративные PKI используют само‑подписанные промежуточные сертификаты, которые затем добавляются в доверенное хранилище клиентских устройств. В этом случае промежуточный фактически становится доверенным, но это исключение, а не правило для публичного интернета.
- Корневые сертификаты могут обновляться или удаляться из хранилищ ОС (например, при уязвимости или изменении политики доверия). Администраторам следует периодически проверять актуальность списка доверенных корней.
- Промежуточный сертификат может быть подписан не корневым, а другим промежуточным, образуя более длинную иерархию. Это не влияет на принцип проверки, но увеличивает количество шагов в цепочке.
- При отзыве промежуточного сертификата все листовые сертификаты, им подписанные, становятся недоверенными до их повторного выпуска или замены цепочки.
Что проверять при проблемах с доверием
Если пользователи получают предупреждения о недоверенном сертификате, выполните следующие проверки:
- Убедитесь, что сервер передаёт полную цепочку (листовый + все промежуточные). Инструменты вроде openssl s_client -connect example.com:443 -showcerts или онлайн‑серверы SSL Labs покажут, какие сертификаты отправляются.
- Проверьте, что каждый сертификат в цепочке имеет корректные даты действия и не находится в списке отзыва (CRL/OCSP).
- Убедитесь, что корневой сертификат, которым завершается цепочка, присутствует в доверенном хранилище клиента (обновлённая ОС, браузер или корпоративное хранилище).
- Если используется собственный корпоративный CA, импортируйте его корневой сертификат в доверенные хранилища всех устройств, которые будут обращаться к внутренним ресурсам.
Вывод
Доверенный корневой сертификат – это фундамент доверия в PKI: самоподписанный, предварительно включённый в хранилища клиентов и используемый как точка проверки цепочки. Промежуточный сертификат служит связующим звеном между корнем и листовым сертификатом, обеспечивая гибкость, безопасность ключа корня и удобство управления сертификатами конечных пользователей. Понимание их ролей позволяет правильно настроить TLS/HTTPS, быстро диагностировать ошибки доверия и поддерживать актуальную инфраструктуру открытых ключей.
