Цепочка сертификатов SSL: порядок, проверка, ошибки

Ключевой вывод

Цепочка сертификатов SSL — это список сертификатов, который связывает сертификат сайта с корневым центром сертификации, которому ваш браузер уже доверяет: собственный (leaf) сертификат сайта, один или несколько промежуточных и корневой из списка браузера. Сервер должен отправлять leaf и промежуточные сертификаты, причём leaf первым; из 12 крупных сайтов, которые мы проверили, каждый отправлял от 2 до 4 сертификатов. Если промежуточного сертификата нет, приложения и API-клиенты падают с ошибками вроде «unable to get local issuer certificate» или «unable to verify the first certificate», даже когда Chrome всё ещё открывает страницу.

Проверьте сейчас

Диаграмма цепочки сертификатов SSL: корневой, промежуточный и leaf сертификаты, соединённые в цепочку доверия
Диаграмма цепочки сертификатов SSL: корневой, промежуточный и leaf сертификаты, соединённые в цепочку доверия
Начать чтение
  1. Что такое цепочка сертификатов SSL?
  2. Три вида сертификатов в цепочке
  3. Как работает цепочка доверия
  4. Реальные цепочки: что отправляют 12 крупных сайтов
  5. Почему существуют промежуточные сертификаты
  6. Как проверить цепочку сертификатов SSL
  7. Распространённые ошибки цепочки сертификатов и их исправление
  8. Лучшие практики цепочки сертификатов
  9. Часто задаваемые вопросы

Что такое цепочка сертификатов SSL?

Цепочка сертификатов SSL (также называемая цепочкой доверия или путём сертификации) — это упорядоченный список цифровых сертификатов, который связывает SSL/TLS-сертификат вашего сайта с доверенным корневым Центром сертификации (CA). Каждый сертификат в цепочке подписан цифровой подписью вышестоящего сертификата, создавая проверяемый путь доверия от вашего сервера до корневого CA, которому браузеры уже доверяют.

Представьте это как цепочку поручительств. Сертификат сервера говорит: «Я — example.com». Промежуточный CA говорит: «Я ручаюсь за сертификат example.com». Корневой CA говорит: «Я ручаюсь за этот промежуточный». Ваш браузер уже доверяет корневому CA, поэтому, следуя цепочке подписей, он доверяет и вашему серверу.

Когда вы открываете HTTPS-сайт, браузер проходит эту цепочку за миллисекунды. Если каждое звено в порядке, страница загружается без предупреждений. Если какое-либо звено отсутствует, просрочено или не вызывает доверия, вместо страницы вы видите предупреждение безопасности, например NET::ERR_CERT_AUTHORITY_INVALID.

Посмотрите цепочку сертификатов сайта

В каждой цепочке есть три вида сертификатов, хотя сервер может отправлять несколько промежуточных:

Корневой сертификатПромежуточный сертификатLeaf-сертификат (серверный)
Кем подписанСамим собой (самоподписанный)Корневым (или другим промежуточным)Промежуточным
Где хранитсяВ списке корневых сертификатов браузера или ОСОтправляется вашим серверомОтправляется вашим сервером
Типичный срок жизниСертификаты действуют 20–25 лет, но браузеры доверяют корневому около 15 (ISRG Root X1: с 2015 до 2030)Несколько лет (YE1 у Let's Encrypt: до 2028)Не более 200 дней для сертификатов, выданных с марта 2026 (Let's Encrypt: 90)
Если ключ утёкПод угрозой все сертификаты под нимОтзывают этот промежуточныйОтзывают и выпускают заново
Сколько ихОколо 100 в списке корневых сертификатов ChromeТысячиСотни миллионов

Корневой сертификат

Корневой сертификат — это якорь доверия на вершине цепочки. Он самоподписанный: Центр сертификации подписал собственный сертификат. Корневые сертификаты предустановлены в браузере и операционной системе — этот набор называется хранилищем доверенных сертификатов.

В собственном списке Chrome около 100 корневых сертификатов (Chrome Root Store); у Mozilla, Apple и Microsoft свои списки. Корневые сертификаты выпускают такие организации, как DigiCert, Let's Encrypt (ISRG), Sectigo, GlobalSign и Google Trust Services. Поскольку корневые ключи очень ценны, CA хранят их офлайн в аппаратных модулях безопасности и используют только для подписания промежуточных сертификатов.

Промежуточный сертификат

Промежуточные сертификаты находятся между корневым и сертификатом вашего сервера. Корневой CA подписывает промежуточный сертификат, а промежуточный CA затем подписывает конечные (серверные) сертификаты. Большинство CA используют один-два промежуточных.

Ваш веб-сервер должен отправлять промежуточные сертификаты вместе с leaf-сертификатом во время TLS-рукопожатия. Chrome умеет скачивать недостающий промежуточный сертификат, а Firefox заранее хранит их, но у приложений, API-клиентов и старых устройств Android нет ни того, ни другого, поэтому для них цепочка рвётся.

Leaf-сертификат (серверный сертификат)

Leaf-сертификат (также называемый сертификатом конечной сущности или серверным сертификатом) — это сертификат, установленный на вашем веб-сервере. Он содержит имя домена, открытый ключ, срок действия и информацию об издателе (промежуточном CA, который его подписал).

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

Как работает цепочка доверия

Когда браузер подключается к сайту по HTTPS, TLS-рукопожатие запускает процесс проверки цепочки, который происходит за миллисекунды:

  • Сервер отправляет свои сертификаты — сначала leaf, затем промежуточные.
  • Браузер строит путь — от leaf вверх до корневого сертификата из собственного списка. Если промежуточного сертификата нет, Chrome скачивает его по адресу, указанному в сертификате (AIA), а Firefox использует собственный предустановленный набор; многие другие клиенты просто выдают ошибку.
  • Проверяются подписи — каждый сертификат должен быть подписан ключом вышестоящего.
  • Проверяется корневой сертификат — путь должен заканчиваться корневым сертификатом из списка браузера. Неизвестный корневой сертификат не проходит проверку.
  • Проверяется срок действия — каждый сертификат должен быть в пределах своих дат и не отозван, а leaf должен покрывать имя в адресной строке.

Реальные цепочки: что отправляют 12 крупных сайтов

27 октября 2026 года мы запросили цепочки у 12 крупнейших сайтов (openssl s_client -showcerts, из двух мест). Ни один не отправил только leaf, а несколько добавили перекрёстно подписанные сертификаты, чтобы старые устройства всё же дошли до известного им корневого. То, что отправляет сервер, может меняться в зависимости от версии TLS, поддержки ECDSA в клиенте и от того, какой узел CDN отвечает: например, facebook.com по TLS 1.2 отправил 3 сертификата.

СайтОтправлено сертификатовВерх отправленной цепочки
facebook.com, reddit.com, netflix.com2Промежуточный сертификат DigiCert (корневой берётся с вашего устройства)
google.com, youtube.com, cloudflare.com3GTS Root R4, перекрёстно подписан GlobalSign для старых устройств
amazon.com3DigiCert Global Root G2, перекрёстно подписан старым корневым сертификатом VeriSign
apple.com3Сам DigiCert Global Root G3 (самоподписанный корневой)
github.com3Корневой сертификат Sectigo, перекрёстно подписан USERTrust
microsoft.com4Microsoft TLS RSA Root G2, перекрёстно подписан DigiCert Global Root G2, плюс этот корневой сертификат DigiCert
wikipedia.org, letsencrypt.org4ISRG Root X2, перекрёстно подписан ISRG Root X1

Что происходит после проверки

Если все проверки пройдены, соединение устанавливается. Если не прошла хотя бы одна, даже по промежуточному сертификату, браузер показывает предупреждение вроде «Ваше подключение не защищено» с кодом, например NET::ERR_CERT_AUTHORITY_INVALID. (Сбои до того, как какой-либо сертификат вообще проверяется, прямо во время TLS-рукопожатия, дают другие коды: ERR_SSL_PROTOCOL_ERROR или ERR_SSL_VERSION_OR_CIPHER_MISMATCH.)

Вот почему важна вся цепочка, а не только leaf-сертификат. Просроченный промежуточный сертификат ломает HTTPS так же, как просроченный серверный, если только клиент не может построить другой путь в обход него.

Почему существуют промежуточные сертификаты

Корневые CA теоретически могли бы подписывать каждый серверный сертификат напрямую, полностью минуя промежуточные. Но есть три критические причины, почему они этого не делают:

  • Изоляция безопасности — Закрытые ключи корневого CA хранятся офлайн в HSM внутри физически защищённых хранилищ. Они используются только для подписания промежуточных, а не миллионов отдельных серверных сертификатов. Это резко снижает риск компрометации корневого ключа.
  • Ограничение ущерба — Если промежуточный CA скомпрометирован, затрагиваются только сертификаты этого промежуточного. Корневой CA может отозвать скомпрометированный промежуточный и выпустить новый — не аннулируя все когда-либо выданные сертификаты.
  • Операционная гибкость — CA используют разные промежуточные для разных целей: один для DV-сертификатов, другой для EV, отдельные для разных регионов или алгоритмов ключей (RSA vs ECDSA).

Как проверить цепочку сертификатов SSL

Существует три способа проверить цепочку сертификатов сайта — от инструментов командной строки до проверок в браузере.

Способ 1: OpenSSL (командная строка)

Команда openssl — самый подробный способ проверки цепочки сертификатов. Выполните это в терминале:

bash
# List each certificate the server sends (s: subject, i: issuer)
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null | grep -E ' [si]:'

# Then read the verdict
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | grep -m1 'Verify return code'

Способ 2: просмотр сертификатов в браузере

Каждый крупный браузер показывает построенную им цепочку (она может отличаться от отправленной сервером, если браузер сам скачал недостающий промежуточный сертификат):

  • Chrome: нажмите значок слева от адреса → Подключение защищено → Действительный сертификат, затем откройте вкладку Подробнее, чтобы увидеть иерархию сертификатов
  • Edge: нажмите значок замка → "Connection is secure" → значок сертификата в верхней части панели
  • Firefox: нажмите значок замка → "Connection secure" → "More information" → "View Certificate"; у каждого сертификата цепочки своя вкладка
  • Safari (18.4 и новее): выберите в строке меню «Safari» > «Сведения о безопасности подключения» (Apple); на iPhone нажмите левую часть адресной строки → "Privacy & Security" → "Connection Security Details"

Способ 3: SSL-проверка DNS Robot

Самая быстрая проверка снаружи вашей сети — наша SSL-проверка: она показывает цепочку, которую отправляет сервер, доверяют ли ей списки корневых сертификатов Mozilla, Chrome, Apple и Microsoft, предупреждает о неполной цепочке и показывает даты каждого сертификата. Для сайтов за Cloudflare она читает сертификат из публичных журналов CT, поэтому там цепочка, которую отправляет сервер, не проверяется.

Распространённые ошибки цепочки сертификатов и их исправление

Проблемы с цепочкой сертификатов — одна из самых частых причин ошибок HTTPS. Вот ошибки, с которыми вы скорее всего столкнётесь, и способы их решения.

Отсутствующий промежуточный сертификат

Сообщение об ошибке: «unable to get local issuer certificate» (curl, Python, PHP), «unable to verify the first certificate» (Node.js) или «incomplete certificate chain»

Причина: сервер отправляет только leaf-сертификат. Chrome часто исправляет это, скачивая промежуточный сертификат сам (как и средство проверки Apple), поэтому в браузере сайт может выглядеть нормально, а curl в Linux, Python, Java, платёжные обратные вызовы и многие приложения падают.

Решение: отправляйте промежуточные сертификаты вместе с leaf. С Let's Encrypt укажите серверу fullchain.pem, а не cert.pem; с другим CA скачайте его промежуточный сертификат и поместите после своего в один файл:

bash
cat your-domain.crt intermediate.crt > fullchain.crt

Самоподписанный сертификат в цепочке

Сообщение об ошибке: «self-signed certificate in certificate chain» (ошибка OpenSSL 19)

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

Решение: для публичных сайтов используйте сертификат публичного CA или установите частный корневой сертификат на клиентах, которым он нужен. Если убрать корневой сертификат из цепочки сервера, станет аккуратнее, но эту ошибку не исправит.

Неправильный порядок сертификатов

Сообщение об ошибке: проверка цепочки не проходит у некоторых клиентов, или они сообщают, что сертификату нет доверия.

Причина: сертификаты в файле цепочки идут в неправильном порядке. TLS 1.3 требует, чтобы собственный сертификат сервера шёл первым, а остальные следовали по порядку, но предписывает клиентам справляться и с другим порядком (RFC 8446 §4.4.2); старые или более строгие клиенты могут не справиться.

Решение: поставьте leaf-сертификат первым, затем каждый промежуточный, начиная с того, который подписал ваш leaf.

Просроченный сертификат в цепочке

Сообщение об ошибке: «certificate has expired», хотя дата окончания вашего leaf-сертификата в порядке.

Причина: истёк срок сертификата выше по цепочке. Самый известный случай: DST Root CA X3 компании IdenTrust, который перекрёстно подписывал корневой сертификат Let's Encrypt, истёк 30 сентября 2021 года, и устройства, не доверявшие ISRG Root X1 (а также клиенты на OpenSSL 1.0.x), перестали открывать сайты на Let's Encrypt.

Решение: скачайте актуальный промежуточный сертификат у вашего CA и замените старый. Затем проверьте обновлённую цепочку в нашей SSL-проверке.

Лучшие практики цепочки сертификатов

  • Всегда отправляйте промежуточные сертификаты — не рассчитывайте, что браузеры починят цепочку; приложения и API-клиенты этого не сделают.
  • Корневой сертификат необязателен — клиенты используют собственную копию, поэтому отправка доверенного им корневого лишь добавляет байты; перекрёстно подписанный корневой сертификат для старых устройств — осознанное исключение.
  • Соблюдайте порядок — сначала leaf, затем промежуточные, начиная с подписавшего ваш leaf и выше.
  • Автоматизируйте продление — сертификаты, выданные с марта 2026, действуют не более 200 дней, а в марте 2027 срок сократится до 100, и Let's Encrypt переходит на 64-дневные сертификаты в феврале 2027.
  • Проверяйте после каждого продления или переезда — CA может сменить промежуточные сертификаты между продлениями. После этого прогоните сайт через SSL-проверку.
  • Следите за каждым именем — www, голый домен и каждый поддомен могут обслуживаться разными сертификатами и цепочками. Поиск поддоменов показывает имена, которые покрывали ваши сертификаты, по публичным журналам сертификатов.

Проверьте цепочку сертификатов SSL прямо сейчас

Бесплатная SSL-проверка DNS Robot показывает цепочку, которую отправляет сайт, доверяют ли ей списки корневых сертификатов Mozilla, Chrome, Apple и Microsoft, предупреждение о недостающем промежуточном сертификате и даты каждого сертификата. Для сайтов за Cloudflare она вместо этого читает сертификат из публичных журналов CT.

Источники

  1. Chains of trust (Let's Encrypt certificates), Let's Encrypt
  2. Chrome Root Store, Chromium
  3. RFC 8446 §4.4.2: Certificate, IETF
  4. Ending OCSP support in 2025, Let's Encrypt
  5. Avoid fraud by using encrypted websites in Safari on Mac, Apple
  6. Mozilla Root Store Policy, Mozilla

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

Что такое цепочка сертификатов SSL?

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

Сколько сертификатов в типичной цепочке SSL?

Видов три (leaf, промежуточный, корневой), но серверы отправляют от 2 до 4 сертификатов: leaf плюс один промежуточный, иногда с перекрёстно подписанными корневыми для старых устройств. Например, ECDSA-цепочка Let's Encrypt идёт от промежуточного сертификата вроде YE2 к Root YE, который перекрёстно подписан ISRG Root X2, а тот — ISRG Root X1.

Нужно ли устанавливать промежуточные сертификаты на сервер?

Да. Ваш сервер должен отправлять leaf-сертификат и все промежуточные во время TLS-рукопожатия. Если их нет, цепочка рвётся в приложениях, API-клиентах и на старых устройствах Android, даже если Chrome всё равно открывает страницу, скачав промежуточный сертификат сам.

Что произойдёт, если цепочка сертификатов нарушена?

Клиенты, которые не могут построить цепочку, отклоняют соединение: в браузерах часто с NET::ERR_CERT_AUTHORITY_INVALID, в приложениях — с «unable to get local issuer certificate». Chrome умеет восстановить недостающий промежуточный сертификат, скачав его, поэтому нарушенная цепочка может проявиться только в других клиентах.

Нужно ли включать корневой сертификат в цепочку сервера?

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

Как исправить «unable to verify the first certificate»?

Ваш сервер не отправляет промежуточный сертификат. С Let's Encrypt укажите серверу fullchain.pem вместо cert.pem; с другим CA поместите его промежуточный сертификат после своего в один файл. Перезагрузите сервер и проверьте его SSL-проверкой.

Что значит «unable to get local issuer certificate»?

Клиенты на основе OpenSSL (curl, Python, PHP, Git) выдают это, когда не могут найти сертификат, выпустивший последний из имеющихся у них. Обычно сервер не отправляет промежуточный сертификат; иногда на стороне клиента отсутствует или устарел собственный набор сертификатов CA, либо прокси переподписывает трафик своим корневым сертификатом. Если SSL-проверка показывает, что цепочка сайта полная, исправляйте клиентскую сторону.

В чём разница между корневыми и промежуточными сертификатами?

Корневой сертификат самоподписанный, хранится в списке корневых сертификатов браузера или операционной системы и пользуется доверием около 15 лет (сам сертификат часто действует 20–25). Промежуточный подписан корневым, его должен отправлять ваш сервер, и он действует несколько лет. Промежуточные нужны, чтобы ключ корневого мог оставаться офлайн.

Как проверить цепочку сертификатов SSL?

Выполните openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -showcerts, посмотрите сведения о сертификате в браузере (Chrome: Подключение защищено → Действительный сертификат → Подробнее) или воспользуйтесь онлайн-SSL-проверкой, которая показывает цепочку, отправляемую сервером.

Об авторе

Shaik Vahid

Основатель DNS Robot. Вахид много лет работал в поддержке веб-хостинга: исправлял клиентам домены, DNS-записи, SSL-сертификаты и доставку почты. Он создаёт инструменты DNS Robot и пишет эти руководства по ошибкам, с которыми люди сталкиваются на самом деле.

Проверка SSL сертификата

Проверка действительности SSL сертификата и деталей безопасности