Из-за временных ограничений на территории РФ наблюдаются проблемы с оплатой. Если платёж не проходит, оставьте запрос в службу поддержки.Служба поддержки работает 24/7 — мы всегда на связи по вопросам хостинга и серверов.Открыт прием заявок на аренду выделенных серверов и размещение оборудования в дата-центре.Напоминаем: рекомендуем включить резервное копирование для дополнительной защиты данных.Доступна новая линейка VPS/VDS с NVMe-дисками и увеличенной производительностью.Технические работы на части серверов завершены. Все сервисы работают в штатном режиме.
Статья3 мин чтенияПросмотры2

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

Отдельно проверяем локальный сертификат и то, что реально отдаёт сервер: срок действия, имя узла и доверие к цепочке требуют разных проверок.

Замок закрытого серверного шкафа
В этой статье

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

Прочитайте локальный сертификат

Примеры рассчитаны на OpenSSL 3.x. Файл certificate.pem — условное имя публичного сертификата в формате PEM, а не закрытого ключа. Подставьте путь к своему файлу, который разрешено читать.

openssl x509 -in certificate.pem -noout -subject -issuer -dates

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

Для проверки, не истекает ли срок в ближайшие семь суток:

openssl x509 -in certificate.pem -noout -checkend 604800

Число задано в секундах. Ненулевой результат этой проверки требует разобраться с сообщением и кодом завершения; в сценарии не скрывайте ошибку чтения файла под общим уведомлением об истечении срока.

Проверьте реальный сервер

Введите доменное имя без протокола и пути:

read -r TARGET_HOST

printf '' | openssl s_client -connect "${TARGET_HOST}:443" -servername "$TARGET_HOST" -verify_hostname "$TARGET_HOST" -verify_return_error -showcerts

Параметр имени сервера нужен для SNI, а отдельная проверка имени сопоставляет сертификат с ожидаемым узлом. Режим возврата ошибки не позволяет считать продолженное после ошибки проверки соединение доказательством доверия.

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

Что означает список сертификатов

Выведенные сертификаты — то, что прислал сервер. Сам факт наличия списка не доказывает, что цепочка построена и проверена. Смотрите итог проверки и учитывайте имя узла, сроки и доверенное хранилище.

Если перед сайтом стоит CDN или балансировщик, вы проверяете публичный узел этой цепочки. Локальный сертификат на исходном сервере может быть другим. Это допустимо в некоторых схемах, но должно соответствовать настройке всей цепи соединений.

Разберите расхождение

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

Закрытый ключ не нужен для этих проверок и не должен попадать в отчёт. Зафиксируйте имя, дату окончания, издателя, результат проверки цепочки и точку подключения. После исправления повторите проверку соединения и откройте сайт обычным клиентом. Исправный локальный файл — только часть результата; пользователю важен сертификат, полученный в реальном HTTPS-сеансе.

Проверка срока зависит от корректных системных часов. При неожиданном результате сначала сопоставьте время машины с доверенным источником.

Обсуждение 0

Делись опытом и задавай вопросы. Комментарии без ссылок появляются после проверки редактором.

Пока никто не написал. Начни обсуждение.