Skip to content

Как ротировать SSL-сертификат без даунтайма

Коротко:

Ротация SSL — замена cert до истечения. Правильный flow: за 30 дней до expiry получить новый cert, добавить его рядом со старым, hot-reload веб-сервера. Клиенты в процессе handshake не замечают разницы. Let's Encrypt auto-renew через certbot timer; commercial CA — manual renew + replace fullchain.pem + reload.

Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.

Пошаговая настройка

  1. За 30 дней до истечения: настройте auto-renew или manual rollout calendar
  2. Let's Encrypt: certbot renew --dry-run — проверка renew-логики без write
  3. Выпустите новый cert: certbot renew или скачайте с commercial CA
  4. Замените fullchain.pem + privkey.pem в nginx config path
  5. Hot-reload (без остановки): nginx -t && nginx -s reload (или systemctl reload nginx)
  6. Проверьте через Enterno SSL-чекер что новый cert live
  7. Monitor next 24h — проверьте, что нет 525/526 ошибок Cloudflare (если используется)

Рабочие примеры

СценарийКонфиг
Let's Encrypt auto-renew timersystemctl enable --now certbot.timer # renews + reload nginx hook
Force renew до expirycertbot certonly --force-renewal -d example.com -d www.example.com
Renew cert на Nginx Plusnginx -s reload # zero-downtime worker restart
Commercial CA manualcat cert.pem intermediate.pem > fullchain.pem; cp fullchain.pem /etc/ssl/; nginx -s reload
Проверка active cert датopenssl x509 -in /etc/letsencrypt/live/example.com/fullchain.pem -noout -dates

Типичные ошибки

  • Забыть OCSP-stapling bundle с новым cert — TLS-handshake замедлится
  • Renew только server cert без intermediate — ERR_CERT_AUTHORITY_INVALID у клиентов
  • Не reload сервер после замены — cert файлы обновились, но nginx держит старый в памяти
  • Renew за 5 дней до expiry — нет запаса если что-то сломается
  • Cloudflare Full (strict) + legacy origin cert — проверяйте chain через origin server directly
СертификатСрок, издатель, домены (SAN)
ЦепочкаПроверка промежуточных и корневых CA
TLS-протоколВерсия TLS и набор шифров
УязвимостиHeartbleed, POODLE, слабые шифры

Почему нам доверяют

TLS 1.3
поддержка
Полная
цепочка CA
<2с
результат
30/14/7
дней до истечения

Как это работает

1

Введите домен

2

Проверка цепочки TLS

3

Дата истечения и уязвимости

Что проверяет SSL-тест?

SSL/TLS — протокол шифрования, который защищает данные между браузером и сервером. Наш инструмент анализирует сертификат, цепочку доверия, версию TLS и известныеуязвимости.

Детали сертификата

Издатель, срок действия, алгоритм подписи, покрываемые домены (SAN) и тип валидации (DV/OV/EV).

Цепочка доверия

Проверка полной цепочки: от конечного сертификата через промежуточные до корневого CA.

Анализ TLS

Версия протокола (TLS 1.2/1.3), набор шифров, поддержка Perfect Forward Secrecy (PFS).

Оповещения об истечении

Создайте монитор — получайте уведомления в Telegram и email за 30/14/7 дней до истечения.

DV vs OV vs EV сертификаты

DV (Domain Validation)
  • Подтверждение только владения доменом
  • Выдаётся за минуты автоматически
  • Бесплатно через Let's Encrypt
  • Подходит для большинства сайтов
  • Самый распространённый тип
OV / EV
  • Проверка организации (OV) или расширенная проверка (EV)
  • Выдаётся за 1-5 рабочих дней
  • Стоимость от $50 до $500/год
  • Для финансов, e-commerce, госсайтов
  • Повышает доверие пользователей

Кому это нужно

DevOps

мониторинг SSL-сертификатов

Безопасность

аудит TLS-конфигурации

SEO

HTTPS как фактор ранжирования

E-commerce

доверие покупателей

Частые ошибки

Истёкший сертификатБраузеры блокируют сайт с истёкшим SSL. Настройте автопродление или мониторинг.
Неполная цепочка сертификатовБез промежуточного CA некоторые браузеры и боты не смогут верифицировать сертификат.
Mixed content на HTTPS-сайтеHTTP-ресурсы на HTTPS-странице — замок в браузере пропадает, снижается доверие.
Использование TLS 1.0/1.1Устаревшие версии TLS содержат известные уязвимости. Используйте TLS 1.2+ или 1.3.
Несовпадение домена в сертификатеСертификат должен покрывать все домены сайта, включая www и поддомены.

Лучшие практики

Настройте автопродлениеLet's Encrypt + certbot с cron — сертификат обновляется автоматически каждые 60-90 дней.
Включите HSTSЗаголовок Strict-Transport-Security заставляет браузер всегда использовать HTTPS.
Используйте TLS 1.3TLS 1.3 быстрее (1-RTT handshake) и безопаснее — убраны устаревшие шифры.
Мониторьте срок действияСоздайте монитор на Enterno.io — получайте уведомления задолго до истечения.
Проверяйте цепочку после обновленияПосле обновления сертификата убедитесь, что промежуточные сертификаты установлены.

Получите больше с бесплатным аккаунтом

Мониторинг SSL-сертификатов, история проверок и уведомления за 30 дней до истечения.

Зарегистрироваться (FREE)

Больше по теме

Часто задаваемые вопросы

Let's Encrypt сколько раз в год renew?

Certbot auto-renew срабатывает при <30 дней до expiry. LE cert валиден 90 дней → renew ~6 раз в год.

Нужен ли restart nginx или только reload?

Reload (SIGHUP) достаточно — worker processes плавно переинициализируются. Restart = downtime.

Как настроить auto-reload после renew?

Certbot deploy hook: <code>certbot renew --deploy-hook "systemctl reload nginx"</code> или в /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh.

Что делать если cert истёк?

Urgent renew + reload. Если <code>certbot renew</code> не работает из-за rate limit: <code>certbot certonly --force-renewal</code>.