Проверка SSL сертификата сайта: срок, цепочка доверия и ошибки HTTPS

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

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

Что именно подтверждает SSL-сертификат

В современном HTTPS фактически используется TLS, хотя выражение «SSL-сертификат» остаётся привычным. Сертификат связывает открытый криптографический ключ с одним или несколькими доменными именами. Удостоверяющий центр подписывает сертификат, а клиент проверяет подпись и пытается построить доверенную цепочку до корневого центра.

Успешная проверка означает, что на момент соединения сертификат действителен, запрошенное имя перечислено в поле Subject Alternative Name, подпись подтверждается доверенной цепочкой, а сервер способен согласовать поддерживаемую версию TLS и набор шифров. Она не доказывает безопасность CMS, отсутствие уязвимостей, добросовестность владельца сайта или защищённость всех сторонних скриптов.

Диагностический алгоритм

1. Проверить доступность HTTPS и перенаправления

Откройте точный публичный адрес, который используют посетители: например, https://example.ru/ и отдельно https://www.example.ru/, если оба варианта встречаются в ссылках. Сертификаты и конфигурация могут различаться. Проверьте также переход с HTTP: он должен приводить на нужный HTTPS-хост без циклов и возврата на незащищённый протокол.

В командной строке заголовки ответа можно запросить так:

curl -I https://example.ru/
curl -I http://example.ru/

Следите за кодами ответа и заголовком Location. Ошибка сертификата возникает до передачи обычного HTTP-ответа, поэтому код 200 сам по себе не объясняет, корректно ли прошёл TLS-этап.

2. Сверить срок действия

У сертификата есть границы Not Before и Not After. Текущее время клиента должно находиться внутри этого интервала. Просроченный сертификат отвергается, но ошибка «ещё не действителен» также возможна из-за неверных часов на сервере или устройстве пользователя.

Данные удалённого сертификата можно посмотреть через OpenSSL:

openssl s_client -connect example.ru:443 -servername example.ru </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltName

Параметр -servername передаёт SNI — имя сайта, для которого сервер должен выбрать сертификат. Без SNI на одном IP-адресе может вернуться сертификат другого виртуального хоста, что исказит диагностику.

3. Проверить имя хоста

Искомый домен должен присутствовать в расширении Subject Alternative Name. Полагаться только на Common Name не следует. Сертификат для example.ru не обязан покрывать www.example.ru, и наоборот.

Wildcard-сертификат вида *.example.ru обычно подходит для shop.example.ru, но не для самого example.ru и не для многоуровневого имени api.shop.example.ru. Для каждого публичного варианта хоста соответствие проверяют отдельно.

4. Построить цепочку доверия

Сервер обычно отправляет конечный сертификат сайта и необходимые промежуточные сертификаты. Корневой сертификат, как правило, уже находится в доверенном хранилище клиента и сервером не передаётся. Если промежуточное звено отсутствует или передано в неверном порядке, некоторые браузеры могут восстановить цепочку самостоятельно, а API-клиенты, роботы и старые устройства — нет.

openssl s_client -connect example.ru:443 -servername example.ru -showcerts

В выводе изучите раздел certificate chain и итоговый код проверки. Сообщения unable to get local issuer certificate и unable to verify the first certificate часто указывают на неполную цепочку, но результат зависит и от локального набора доверенных корней.

5. Оценить TLS-конфигурацию

Валидный сертификат не компенсирует слабые настройки протокола. Следует определить, какие версии TLS принимает сервер, не разрешены ли устаревшие протоколы и может ли современный клиент согласовать безопасный набор шифров. Также важно проверить поддержку SNI на целевых хостах и соответствие сертификата каждому из них.

Отдельно исследуйте содержимое страницы. Если HTML загружается по HTTPS, но изображения, шрифты, скрипты или iframe запрашиваются по HTTP, возникает mixed content. Активное смешанное содержимое браузер может заблокировать, из-за чего интерфейс или формы перестанут работать.

Критерии корректной HTTPS-конфигурации

Критерий Что проверить Признак проблемы
Срок Текущая дата находится между Not Before и Not After Сертификат истёк или ещё не действует
Имя хоста Точный домен указан в Subject Alternative Name Несовпадение имени сертификата
Цепочка Переданы необходимые промежуточные сертификаты Клиент не находит издателя
Доверие Цепочка завершается корнем из хранилища клиента Неизвестный или недоверенный центр
TLS Современный клиент согласовывает защищённое соединение Нет общего протокола или набора шифров
Ресурсы Все элементы страницы загружаются по HTTPS Mixed content и блокировка ресурсов
Редиректы HTTP ведёт на канонический HTTPS-адрес Цикл, лишняя цепочка или переход обратно на HTTP

Типовые ошибки и их причины

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

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

Имя не соответствует сайту

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

Неполная цепочка

На сервер установлен только сертификат домена без промежуточного пакета. Исправление обычно связано с корректной настройкой full chain на веб-сервере или балансировщике. Добавлять случайные сертификаты в цепочку не следует: нужны именно документы, соответствующие издателю конечного сертификата.

Ошибка только у части пользователей

Разница может быть связана с устаревшим хранилищем корневых сертификатов, старой версией TLS, особенностями IPv4 и IPv6, разными узлами CDN или кешированной цепочкой. Сравните результаты из разных сетей и клиентов, проверьте все IP-адреса домена и повторите тест без локального кеша.

Сертификат верный, но браузер предупреждает

Причиной бывает mixed content, неверное системное время, перехват HTTPS антивирусом или корпоративным прокси, а также сертификат стороннего ресурса. В инструментах разработчика изучите вкладки Security, Network и Console: они помогают отделить ошибку основного документа от проблемы подключаемого элемента.

Границы проверки

Внешняя диагностика показывает то, что публичный сервер отдаёт конкретному клиенту в момент запроса. Она не раскрывает закрытые ключи, внутреннюю топологию и правила обновления сертификатов. Результат может различаться по регионам, IP-адресам, SNI, версии клиента и узлу CDN.

Проверка сертификата и TLS — узкая техническая задача. Общий аудит безопасности охватывает более широкий набор внешних и внутренних сигналов, поэтому отсутствие ошибок HTTPS нельзя трактовать как подтверждение полной защищённости сайта.

Итог

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

SiteVisor анализирует публичный URL без доступа к CMS и помогает проверить технические, SEO/GEO и конверсионные сигналы страницы. Чтобы получить внешний срез сайта и затем предметно разобрать найденные замечания, запустите бесплатную проверку.