Перейти к содержимому

Цепочка SSL-сертификатов: root, intermediate и fullchain

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

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

Упрощённая цепочка

Сертификат сайта
↓
Intermediate CA
↓
Root CA

Сертификат сайта

Он выпущен непосредственно для вашего домена или набора доменов.

Intermediate CA

Центры сертификации обычно не подписывают каждый публичный сертификат прямо главным root-ключом. Используются промежуточные центры.

Root CA

Корневые сертификаты находятся в trust store операционной системы, браузера или приложения.

Почему сервер не отправляет root

Клиент должен уже иметь доверенный root. Отправленный сервером root сам по себе не создаёт доверие.

Что сервер должен отправить

Обычно:

  • сертификат сайта;
  • необходимые intermediate certificates.

Ошибка incomplete chain

Администратор устанавливает только сертификат домена, забывая intermediate.

Некоторые браузеры могут достроить цепочку самостоятельно, а другие клиенты — нет.

Почему «у меня работает» недостаточно

Ваш компьютер мог уже иметь нужный intermediate в кеше.

У нового клиента его нет — и он получает ошибку.

fullchain

В конфигурациях Let's Encrypt часто используется файл вида:

fullchain.pem

Он содержит серверный сертификат вместе с нужной цепочкой для отправки клиенту.

Для nginx

Типовая идея:

ssl_certificate     fullchain.pem;
ssl_certificate_key privkey.pem;

Не копируйте конфигурацию вслепую

Пути и механизм управления сертификатами зависят от вашей системы.

Как увидеть цепочку

openssl s_client \
-connect example.com:443 \
-servername example.com \
-showcerts

Verify return code

Внизу вывода openssl можно увидеть результат проверки цепочки.

Почему старое устройство не доверяет сайту

В его trust store может отсутствовать нужный root CA.

Это особенно заметно на старых ОС

Современный сайт работает на новых устройствах, но очень старая система не может построить доверенную цепочку.

Сертификат от корпоративного proxy

В организациях HTTPS-трафик иногда проходит через inspection proxy, который устанавливает собственный корпоративный CA.

На управляемом устройстве он доверенный, на другом — нет.

Цепочка и self-signed

Самоподписанный сертификат не имеет публичной доверенной цепочки, если соответствующий root специально не установлен у клиента.

Как NexIP помогает

SSL Checker должен показывать не только дату окончания, но и issuer, цепочку и ошибки валидации.

Что делать при проблеме

  1. Проверить сертификат сайта.
  2. Проверить intermediate.
  3. Проверить fullchain.
  4. Перезапустить конфигурацию сервера.
  5. Проверить с внешней машины.

FAQ

Почему Chrome работает, а curl ругается?

У них может различаться trust store или способность достроить недостающую цепочку.

Нужно устанавливать root на сервер?

Для отправки клиенту обычно важны leaf и intermediate; доверенный root должен находиться у клиента.

Цепочка влияет на шифрование?

Она прежде всего обеспечивает проверку доверия к тому, с кем установлено защищённое соединение.

Диагностика NexIP

Продолжите реальной проверкой

Откройте полный раздел диагностики и проверьте сайт, домен или сетевые параметры.

Открыть диагностику

Читайте дальше

Материалы по теме

SSL-сертификаты

Почему браузер пишет «Подключение не защищено»

Сообщение «Подключение не защищено» не обязательно означает, что сайт заражён или вас прямо сейчас взламывают. Оно означает, что браузер не смог нормально подтвердить защищённость HTTPS-соединения. Причин несколько — от банально…

Читать
SSL-сертификаты

Сертификат SSL не соответствует домену: почему так бывает

Ошибка «сертификат не соответствует имени сайта» означает буквально то, что написано: браузер подключился к серверу, получил сертификат, но не нашёл в нём домен, который пользователь открыл. Простой пример Открываем: api.example.com а…

Читать
Вернуться в базу знаний