Переходите с UptimeRobot? Импортируйте мониторы одним кликом по ключу API только для чтения.Начать бесплатно →
  1. Главная
  2. Блог
  3. Руководства

Сертификат SSL просрочен: что делать за 20 минут

Пошаговое восстановление после просроченного сертификата SSL на сайте клиента: диагностика, продление через Let’s Encrypt или УЦ, исправление цепочки и оповещения о сроке действия.

Руководства

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

Вот порядок действий. Первая часть возвращает сайт к жизни. Вторая гарантирует, что такого разговора у вас больше не будет.

Минута 0: убедитесь, что это действительно срок действия

Выполните на любой машине:

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

Вы получите notBefore, notAfter и издателя. Если notAfter в прошлом, это срок действия. Если даты нормальные, но браузеры всё равно жалуются, перейдите к разделу о цепочке ниже: проблема в пропущенном промежуточном сертификате или несовпадении имени хоста, а не в сроке действия.

Проверьте также, стоит ли сайт за Cloudflare или другим прокси. Если Cloudflare работает в режиме SSL «Full», посетители видят сертификат Cloudflare, и он обновляется сам. Просроченный сертификат стоит на origin-сервере; исправление то же, но не такое срочное. Если нужно выиграть время, на час переключите Cloudflare с «Full (strict)» на «Full».

Минута 2: выясните, как выпущен сертификат

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

  • Let’s Encrypt (R10, R11, E5, E6 и т. п.): что-то автоматизированное должно было его обновить и не обновило. Зайдите на сервер и найдите клиент: certbot, acme.sh, Caddy, Traefik, AutoSSL в cPanel или панель хостинга.
  • Коммерческий УЦ (DigiCert, Sectigo, GlobalSign): кто-то купил его год назад, а письмо о продлении ушло в ящик, который никто не читает. Нужно купить или продлить сертификат и установить вручную.
  • Управляемый хостингом (Kinsta, WP Engine, Cloudways, SiteGround): откройте их панель; обычно там есть кнопка «обновить» или «перевыпустить», а поддержка может сделать это принудительно.

Минута 5: продление через Let’s Encrypt

На сервере с certbot:

sudo certbot renew --force-renewal
sudo systemctl reload nginx   # or apache2

Если не получилось, прочитайте ошибку. Типичные причины:

  1. Изменился DNS. Домен теперь указывает на Cloudflare или новый хост, и проверка HTTP-01 попадает не на тот сервер. Воспользуйтесь проверкой DNS-01 или запустите certbot там, куда действительно приходит трафик.
  2. Закрыт порт 80. Для HTTP-01 порт 80 должен быть открыт из интернета. Добросовестное изменение в файрволе это сломало.
  3. Превышен лимит запросов. Let’s Encrypt разрешает 5 дубликатов сертификата в неделю. Если сломанный cron повторял попытки несколько дней, вы упёрлись в этот лимит. Подождите или выпустите сертификат для немного другого набора имён (добавьте www.).
  4. Пропал cron или таймер systemd. systemctl list-timers | grep certbot должен показать таймер. Если его нет, выполните sudo systemctl enable --now certbot.timer.

В Caddy или Traefik перезапустите службу и прочитайте журнал: они обновляют сертификаты при запуске.

Минута 10: продление коммерческого сертификата

Войдите в кабинет УЦ, продлите сертификат и сгенерируйте на сервере новый CSR:

openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr

Пройдите подтверждение владения (e-mail или DNS), скачайте сертификат и пакет промежуточных сертификатов, установите оба и перезагрузите веб-сервер. Не пропускайте пакет: из-за этого получается сертификат, который работает в Chrome на вашем компьютере и не работает на Android.

Минута 15: проверьте цепочку, а не только даты

echo | openssl s_client -servername example.com -connect example.com:443 -showcerts 2>/dev/null | grep -E "s:|i:"

Вы должны увидеть конечный сертификат, затем один-два промежуточных и корневой, которому доверяет клиент. «unable to get local issuer certificate» означает, что не хватает промежуточного сертификата. Проверьте со второго устройства через мобильный интернет: корпоративные сети кешируют сертификаты так, что проблемы скрываются.

Затем откройте сайт в приватном окне. Если предупреждение исчезло, сообщите клиенту и запишите, что сломалось.

Чтобы это не повторилось: три уровня защиты

1. Почините автоматизацию. Какой бы механизм продления ни подвёл, сделайте так, чтобы он сбоил громко. В certbot добавьте --deploy-hook, который при успехе пингует адрес heartbeat-монитора: тогда тишина будет означать проблему. В панели хостинга включите их письмо о сроке действия и направьте его в общий почтовый ящик.

2. Отслеживайте срок действия снаружи. Автоматизация молча ломается чаще, чем думают. Внешний SSL-монитор читает сертификат, который видят ваши посетители, и оповещает за 30, 14 и 3 дня до окончания срока действия. В Tenium это один SSL-монитор на имя хоста (проверки SSL и срока действия домена доступны с тарифа Starter за $7 в месяц), а каждый https-монитор записывает срок действия в рамках обычной проверки. Оповещения приходят в Telegram или на e-mail, а страница статуса клиента показывает, что с сертификатом всё в порядке.

3. Внесите это в отчёт для клиента. Строка «Сертификат SSL: действителен, осталось 61 день» в ежемесячном отчёте даёт клиенту ощущение заботы, а вас заставляет раз в месяц проверять это без лишних раздумий.

О сертификатах на 90 и 47 дней

Индустрия переходит на более короткие сроки действия сертификатов. Сейчас у Let’s Encrypt это 90 дней, а CA/Browser Forum согласовал путь к сертификатам на 47 дней к 2029 году. Из-за этого автоматизация становится обязательной, а внешний мониторинг — единственной разумной страховкой: если продление сломается, у вас есть дни, а не месяцы, прежде чем посетители увидят предупреждение. Настройте его сейчас, пока память о последнем сбое свежа.

Как работают проверки, читайте на странице мониторинга SSL, а посмотреть любой сертификат прямо сейчас можно с помощью бесплатного SSL-чекера.

Читайте также

Смотрите также мониторинг срока действия домена, инструмент DNS-запросов и инструмент для HTTP-заголовков, чтобы проверить, что на самом деле получает посетитель, а также сравнение Tenium с Pingdom, если проверки сертификатов влияют на выбор поставщика. Магазинам, которые не могут позволить себе просроченный сертификат, стоит прочитать о мониторинге для интернет-магазинов.


Читайте также

Связанные страницы Tenium

Начните следить за первым сайтом бесплатно

30 мониторов бесплатно, проверки из 2 регионов, без банковской карты. Проверка SSL и срока действия домена — от $7 в месяц.