Назад в блог

SSL-сертификат истёк - что делать

· 6 мин чтения

Истёкший SSL-сертификат блокирует доступ ошибкой о небезопасном соединении, и конверсия падает до нуля. Что делать сразу и как этого избежать.

SSL-сертификат истёк - что делать

Что видит посетитель

Просроченный сертификат вызывает в браузере полноэкранное предупреждение:

  • Chrome / Edge: "Your connection is not private" (NET::ERR_CERT_DATE_INVALID)
  • Firefox: "Warning: Potential Security Risk Ahead" (SEC_ERROR_EXPIRED_CERTIFICATE)
  • Safari: "This Connection Is Not Private"

Обычный посетитель нажимает «Назад». Подавляющее большинство посетителей при таком предупреждении покидает страницу. Краулеры поисковиков (Googlebot, Bingbot) перестают индексировать, и через несколько дней вы начнёте терять позиции в поиске.

Алгоритм, если истёк прямо сейчас

  1. Определите, кто выдал сертификат. В терминале: openssl s_client -connect mywebsite.com:443 -servername mywebsite.com < /dev/null 2>/dev/null | openssl x509 -noout -issuer -dates
  2. Let's Encrypt (бесплатно, срок действия 90 дней): обычно через certbot renew или через панель хостинга (One-click renewal).
  3. Коммерческий сертификат (DigiCert, Sectigo, GlobalSign): войдите в админ-панель издателя, сгенерируйте новый CSR и пройдите валидацию домена (DNS TXT-запись или email).
  4. Установите новый сертификат в reverse proxy (nginx, Caddy, Traefik) и перезапустите или перезагрузите процесс.
  5. Проверьте через SSL Labs или через наш SSL check инструмент, что сертификат правильно отдаётся и цепочка сертификатов полная.

Внимание: Не забудьте про intermediate cert - без него современные браузеры могут подтянуть chain через AIA, но старые клиенты и некоторые API-библиотеки упадут.

Автоматическое продление: Let's Encrypt + certbot

Самая простая профилактика - полностью автоматизировать обновление. Сертификат Let's Encrypt обновляется каждые 90 дней через certbot:

# /etc/cron.d/certbot-renew
0 3 * * * root certbot renew --quiet --deploy-hook "systemctl reload nginx"

Этот cron работает ежедневно в 3:00 утра. Certbot внутренне проверяет, приближается ли сертификат к истечению (когда остаётся менее трети его срока жизни, что для 90-дневного сертификата Let's Encrypt составляет примерно 30 дней до конца). Если да, он продлевает сертификат и при успехе перезагружает nginx. Иначе ничего не делает.

Caddy и Traefik: полностью автоматически

Если используете Caddy или Traefik как reverse proxy, ACME challenge встроен прямо в бинарь. Достаточно отметить домен в конфиге, и сервер сам запросит и обновит сертификат:

# Caddyfile
mywebsite.com {
  reverse_proxy localhost:3000
}

Никакого certbot, никакого cron. Caddy в фоне вызывает API Let's Encrypt и управляет всем циклом обновления.

Коммерческие сертификаты: срок 1-3 года

С сентября 2020 все публично доверенные сертификаты имеют максимальный срок жизни 398 дней (CA/B Forum baseline). Некоторые компании всё же предпочитают коммерческие CA, и вот по каким причинам:

  • Extended Validation (EV) показывает организацию в адресной строке (Chrome с 2019 года уже не отображает её prominent).
  • Wildcard для многих субдоменов хотя Let's Encrypt уже поддерживает wildcards через DNS-01.
  • Гарантия финансовая ответственность CA при компрометации.
  • Compliance / аудит некоторые отрасли имеют внешние требования.

Для большинства сайтов достаточно Let's Encrypt или другой бесплатной CA (ZeroSSL, Buypass).

Мониторинг истечения как страховка

Даже при автоматическом обновлении мониторинг истечения работает как страховка. Renewal ведь может упасть по разным причинам:

  • rate limit со стороны CA (Let's Encrypt: 5 дубликатов / 7 дней)
  • изменение DNS, которое ломает ACME challenge
  • правило firewall, блокирующее порт 80 (HTTP-01 challenge)
  • падение процесса certbot или cron, которое никто не заметил

ePulz.io отслеживает истечение каждого контролируемого endpoint и отправляет alert за 30, 14, 7, 3 и 1 день до окончания срока действия. Достаточно одного зелёного сигнала, что сертификат успел обновиться - и вы уверены, что автоматика работает.

Активируйте SSL-мониторинг

Оповещения за 30/14/7/3/1 день до истечения. Без конфигурации, без изменений DNS. 7 дней бесплатно.

Запустить мониторинг →

Поделиться: Ссылка скопирована

Попробуйте ePulz.io бесплатно - 7 дней без банковской карты.

Создать аккаунт