SSL-сертификаты Nginx / Apache / TLS

SSL сайта: Сервер отправляет неполную цепочку промежуточных сертификатов

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

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

В этой статье
  1. Что происходит и когда применима инструкция
  2. Основные причины и их признаки
  3. Пошаговая диагностика и устранение
  4. Проверка результата
  5. Если решить проблему не удалось

#Что происходит и когда применима инструкция

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

#Основные причины и их признаки

Возможная причинаКак узнатьЧто делать
Использован только cert.pemВместо файла цепочки сервер отправляет только сертификат узла.В настройке TLS указан одиночный сертификат сайтаУкажите предусмотренный файлом fullchain.pem полный набор.
Неправильный порядок PEMВ начале обычно должен идти сертификат сайта, далее нужные промежуточные звенья.Сервер сообщает ошибку или отдаёт несовместимую цепочкуСверьте Issuer/Subject и документацию УЦ.
TLS завершает другое устройствоCDN, балансировщик или хостинг может использовать независимый комплект.На сервере файлы верны, а снаружи цепочка инаяПроверьте цепочку на каждом внешнем узле.

#Пошаговая диагностика и устранение

  1. Снимите точную ошибку клиентаПопросите пользователя сохранить название приложения, систему, время и код ошибки, например unable to get local issuer certificate. Откройте сайт из другой сети. Различайте неполную цепочку и ошибку имени домена: это разные проверки.
  1. Посмотрите сертификаты, отдаваемые снаружиНа Linux/macOS с OpenSSL выполните диагностическое подключение, передавая имя SNI. Замените пример своим доменом, проверьте Certificate chain, субъекты и проверку пути. Сам факт подключения s_client ещё не подтверждает доверие.
    Linux · Терминал (Bash)Команда
    Терминал Linux/macOS; без администратора. example.com заменить; вывод содержит публичные сертификаты и результат проверки, ошибок быть не должно.
    openssl s_client -connect example.com:443 -servername example.com -showcerts -verify_return_error </dev/null
  1. Определите конечную точку TLSЧерез DNS и настройки CDN установите, какой сервер отвечает посетителю. Если снаружи CDN, проверяйте сертификат внешнего узла в панели CDN отдельно от Origin. Не меняйте сертификат на VPS, если клиент получает его от другой системы.
  1. Сравните выдачу и локальные файлыНа Nginx откройте нужный блок server и строку ssl_certificate, на Apache — настройки SSLCertificateFile соответствующего виртуального узла. Проверьте путь, разрешения на чтение и дату файла без передачи закрытого ключа куда-либо. В Nginx для Certbot обычно используется fullchain.pem, а не один cert.pem.
  1. Подготовьте корректную цепочкуСкачайте промежуточный сертификат только из доверенного источника удостоверяющего центра либо используйте штатный fullchain.pem, созданный клиентом ACME. Не скачивайте закрытые ключи из интернета и не приклеивайте произвольные корневые сертификаты. Сохраните копию конфигурации.
  1. Проверьте настройки до примененияНа Linux с Nginx выполните тест синтаксиса, он не перезапускает сервер. Если используете Apache, примените apachectl configtest соответствующей установки. При ошибке верните старую конфигурацию и не выполняйте перезапуск.
    Linux · Терминал (Bash)КомандаНужен sudo
    Linux, Nginx; sudo требует прав администратора. Ожидаются syntax is ok и test is successful.
    sudo nginx -t
  1. Аккуратно примените изменениеТолько после успешной проверки и в согласованное окно дайте серверу перечитать конфигурацию через панель хостинга либо штатный reload. Если сертификат управляется CDN, применяйте исправление в его кабинете. Не меняйте системное хранилище доверенных корней ради обхода проблемы.
  1. Повторите внешнюю проверкуВыполните ту же команду с внешнего устройства и на проблемном клиенте. Убедитесь, что полная цепочка доступна, имя соответствует домену и ошибка доверия исчезла. Если прежняя цепочка остаётся только на части адресов, проверьте все IPv4/IPv6 и узлы CDN.

#Проверка результата

Внешняя TLS-проверка сообщает доверенную цепочку и правильное имя; клиенты без заранее закешированных промежуточных сертификатов открывают сайт без предупреждения, HTTPS и прежние приложения продолжают работать.

#Если решить проблему не удалось

Если цепочка верная, но клиент всё ещё отвергает сайт, проверьте системное время, доверенный корень и ограничения TLS старого клиента. Не предлагайте посетителям устанавливать сомнительные корневые сертификаты; направьте к администратору устройства.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.