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"
Обычный посетитель нажимает «Назад». Более 95 % органического трафика просто уходит. Бот-краулеры (Googlebot, Bingbot) перестают индексировать, и через несколько дней вы начнёте терять позиции в поиске.
Алгоритм, если истёк прямо сейчас
- Определите, кто выдал сертификат. В терминале:
openssl s_client -connect mywebsite.com:443 -servername mywebsite.com < /dev/null 2>/dev/null | openssl x509 -noout -issuer -dates - Let's Encrypt (бесплатно, срок действия 90 дней): обычно через
certbot renewили через панель хостинга (One-click renewal). - Коммерческий сертификат (DigiCert, Sectigo, GlobalSign): войдите в админ-панель издателя, сгенерируйте новый CSR, пройдите валидацию домена (DNS TXT или email).
- Установите новый сертификат в reverse proxy (nginx, Caddy, Traefik) и перезапустите / reload-ните процесс.
- Проверьте через SSL Labs или через наш SSL check инструмент, что сертификат правильно отдаётся и chain полная.
Внимание: Не забудьте про 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 внутренне проверяет, приближается ли сертификат к истечению (по умолчанию за 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 все публично доверенные сертификаты имеют максимальный срок жизни 397 дней (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 дней без банковской карты.
Создать аккаунт