bg-tutorials

Как проверить дату истечения срока действия SSL-сертификата с помощью OpenSSL

SSL сертификаты имеют ограниченный срок действия и должны регулярно обновляться, чтобы оставаться доверенными браузерами. Публичные сертификаты, выданные после 15 марта 2026 года, ограничены 200 днями, максимальный срок действия сократится до 100 дней 15 марта 2027 года и до 47 дней 15 марта 2029 года. Точное знание даты истечения срока действия сертификата помогает своевременно выполнить обновление и избежать сбоев.

В этом руководстве показано, как проверить срок действия сертификата с помощью OpenSSL: для работающего сервера, для локального файла, а также как проверить, не истекает ли срок действия сертификата в ближайшее время.

Быстрый ответ:

Для работающего сайта выполните:

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -enddate. 

Для файла сертификата выполните:

openssl x509 -in your_certificate.pem -noout -enddate. 

Значение notAfter — это дата истечения срока действия.

Метод 1: Проверка сертификата на работающем сервере

Этот метод подключается к работающему сайту и считывает обслуживаемый им сертификат — файл сертификата при этом не нужен. Он работает для любого доступного хоста (удалённого домена или localhost с нужным портом для локального сервера).

На Linux и macOS

echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -enddate

Замените yourdomain.com на ваш реальный домен. Команды идентичны на macOS, поскольку macOS является Unix-подобной системой (встроенный openssl — это LibreSSL, который поддерживает эти параметры).

На Windows

  • Откройте командную строку или PowerShell (нажмите Win + R, введите cmd или powershell и нажмите Enter).
  • Выполните:
echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>nul | openssl x509 -noout -enddate

На Windows используйте 2>nul вместо 2>/dev/null, чтобы скрыть сообщения об ошибках.

Метод 2: Проверка сертификата из PEM файла

PEM файл — это сертификат в кодировке base64, который начинается с ——BEGIN CERTIFICATE—— и заканчивается ——END CERTIFICATE——. Используйте этот метод, когда файл сертификата находится на диске.

На Linux и macOS

Перейдите в папку с сертификатом, затем прочитайте дату его окончания (замените your_certificate.pem на имя вашего файла):

cd /path/to/your/certificate/directory
openssl x509 -in your_certificate.pem -noout -enddate

На Windows

cd C:pathtoyourcertificatedirectory
openssl x509 -in your_certificate.pem -noout -enddate

Убедитесь, что OpenSSL установлен и добавлен в PATH; в противном случае укажите полный путь к исполняемому файлу openssl.exe.

Просмотр обеих дат или проверка скорого истечения срока действия сертификата

Чтобы увидеть как дату выдачи (notBefore), так и дату истечения срока действия (notAfter), используйте -dates вместо -enddate:

openssl x509 -in your_certificate.pem -noout -dates

Чтобы проверить, истечёт ли срок действия сертификата в течение заданного периода, используйте -checkend с указанием количества секунд (здесь 2592000 секунд = 30 дней):

openssl x509 -in your_certificate.pem -noout -checkend 2592000

Команда выводит Certificate will not expire (и завершается со статусом 0) или Certificate will expire (статус 1) — что делает её идеальной для скриптов мониторинга и заданий cron.

Понимание команды и вывода

Рассмотрим команду для работающего сервера и её вывод в качестве примера:

echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -enddate

Вывод:

notAfter=Sep 15 23:59:59 2026 GMT

Вот что делает каждая часть:

  • echo | — отправляет пустой ввод, чтобы команда завершилась без ожидания взаимодействия.
  • openssl s_client — открывает SSL/TLS соединение с сервером.
  • -servername example.com — устанавливает Server Name Indication (SNI), что необходимо, когда сервер обслуживает несколько сертификатов для разных доменов.
  • -connect example.com:443 — хост и порт для подключения (порт 443 — стандартный порт HTTPS).
  • 2>/dev/null (Linux/macOS) или 2>nul (Windows) — скрывает сообщения об ошибках, чтобы отображался только нужный вывод.
  • | openssl x509 -noout -enddate — передаёт сертификат в инструмент x509; -noout подавляет вывод PEM, а -enddate выводит только дату истечения срока действия.
  • notAfter=… — дата и время, когда сертификат перестаёт быть действительным.

Автоматизация: перестаньте отслеживать даты вручную

Вместо того чтобы проверять даты истечения срока действия вручную — особенно по мере сокращения периодов действия до 47 дней — вы можете использовать ACME как Certificate-as-a-Service (CaaS). Он выполняет проверку домена, устанавливает сертификаты и автоматически обновляет их до истечения срока действия, чтобы ваш сайт оставался доверенным без ручного вмешательства.

Итог

OpenSSL проверяет срок действия сертификата одной командой: для работающего сервера с помощью s_client или из файла с помощью x509 -enddate, а -dates и -checkend добавляют дату выдачи и проверку скорого истечения срока. Поле notAfter точно указывает, когда нужно выполнить обновление, чтобы избежать перебоев в работе сервиса. Когда вы будете готовы к обновлению, ознакомьтесь с нашими SSL сертификатами.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

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