OpenSSL: как проверить срок действия и цепочку сертификата

  • Обновлено
  • Чтение ≈ 2 минуты

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

Команда openssl x509 -noout -dates показывает срок, openssl s_client — цепочку. Настройте мониторинг заранее.

В этой статье
  1. Что означает сообщение
  2. Причины и признаки
  3. Пошаговое решение
  4. На что обратить внимание

#Что означает сообщение

Сообщение
Проверка сертификата

Команда openssl x509 -noout -dates показывает срок, openssl s_client — цепочку. Настройте мониторинг заранее.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Не отслеживается срокНе настроено предупреждение до даты Not After: действующий сертификат может истечь незаметно.Добавьте проверку срока на реальном HTTPS-узле с запасом времени для продления и смены сертификата.
Неполная цепочкаКлиент получает конечный сертификат без необходимого промежуточного, поэтому не находит доверенную цепочку.Настройте выдачу корректного fullchain от удостоверяющего центра и проверьте цепочку с внешнего клиента.
Не тот сертификатСервер может отдавать старый сертификат или сертификат чужого виртуального хоста; сравните SAN с именем запроса.Сверьте актуальный путь сертификата и конфигурацию виртуального хоста, затем выполните проверочный HTTPS-запрос.
SNITLS-клиент без server_name может получить сертификат домена по умолчанию, даже если файл другого домена корректен.Указывайте целевое имя через -servername при проверке openssl; настройте отдельные хосты с правильными сертификатами.

#Пошаговое решение

  1. Проверьте исходные условияНа компьютере с OpenSSL откройте терминал и выполните openssl s_client -connect example.com:443 -servername example.com -showcerts, заменив домен настоящим. Параметр -servername важен: на одном IP может работать несколько сайтов с разными TLS-сертификатами. Отмечайте сообщения о доверии цепочке и имя выданного сертификата.
  2. Проверьте датыДля быстрого просмотра срока действия выполните echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates. Команда выводит notBefore и notAfter; если соединение не установилось, перенаправление ошибок может скрыть причину — повторите подробную команду без 2>/dev/null.
  3. Проверьте другую возможную причинуПроверьте, что имя сайта содержится в SAN сертификата: echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -ext subjectAltName. Посмотрите в браузере замок → сведения о соединении → сертификат; устаревший CN сам по себе не заменяет SAN.
  4. Проверьте итогПри ошибке цепочки убедитесь, что сервер отдаёт промежуточные сертификаты, а корневой центр доверен клиенту. Исправляйте комплект сертификатов на сервере и проверяйте через несколько клиентов; не отключайте проверку TLS в приложении. После обновления повторите команды и проверьте срок действия уже отдаваемого, а не только файла на диске.

#На что обратить внимание

Не считайте успешное TLS-соединение доказательством корректной цепочки: отдельные клиенты могут пропускать ошибки проверки. Учитывайте промежуточные сертификаты и проверяйте именно внешний адрес сайта.

Linux · Терминал (Bash)Команда
Срок действия сертификата.
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates

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

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

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