CTR1Битрикс24 с AI для роста продаж
AI
+7 (966) 863-40-80Пн–Пт 10:00–19:00
Сайты10 сентября 2026 г.8 мин чтения

Сайт показывает ошибку сертификата: проверяем срок, цепочку и SNI

Послойная диагностика TLS: какой сертификат отдаёт домен, совпадает ли SNI, полна ли цепочка и почему автоматическое продление не попало в веб-сервер.

SSLTLSсайтNginx
SSL-сертификат истёк: что проверить до ручной замены на сайте

Браузер показывает предупреждение о сертификате, а панель хостинга уверяет, что продление прошло. Не начинайте с повторного выпуска. Сначала узнайте, какой сертификат реально отдаёт публичный endpoint. Между файлом на диске и браузером могут стоять Nginx, балансировщик или CDN.

Снимите сертификат с правильным SNI

DOMAIN=example.ru
echo | openssl s_client -connect example.ru:443 -servername example.ru -showcerts 2>/dev/null \
  | openssl x509 -noout -subject -issuer -serial -dates

curl -Iv https://example.ru/

Параметр -servername передаёт имя через SNI. Без него сервер с несколькими virtual host может вернуть чужой сертификат. Проверять только IP здесь недостаточно.

Читайте результат по слоям

ПризнакПричинаСледующий шаг
notAfter в прошломСертификат истёкПроверить renewal
subject другого доменаSNI или default vhostПроверить server_name
Файл новый, снаружи старыйНет reload или TLS на проксиНайти точку TLS
unable to get local issuerНеполная цепочкаПроверить fullchain

PASS: subject покрывает домен, notAfter в будущем, а curl -Iv завершает TLS без ошибки. FAIL: локальный файл новый, но внешняя команда показывает другой serial.

Сверьте конфигурацию

sudo nginx -t
sudo nginx -T 2>/dev/null | grep -E 'server_name|ssl_certificate(_key)?'

sudo certbot renew --dry-run

nginx -T выводит пути конфигурации. Не публикуйте приватный ключ. После обновления проверьте reload Nginx. Новый файл сам по себе не меняет сертификат в работающем процессе.

Алгоритм восстановления

  1. Сохраните внешний serial, даты и issuer.
  2. Определите точку TLS: Nginx, CDN или балансировщик.
  3. Сверьте активный путь с обновлённым файлом.
  4. Запустите dry-run renewal и прочитайте ошибку.
  5. Проверьте конфигурацию веб-сервера.
  6. Выполните штатный reload.
  7. Повторите внешние openssl и curl.

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

Проверяют без SNI. Получают сертификат default vhost.

Подменяют только leaf. Браузеру не хватает промежуточного сертификата.

Забывают CDN. На origin всё свежее, а публичный TLS завершается раньше.

Перезапускают всё. До фиксации serial теряется доказательство.

Чек-лист

  • Домен проверен с SNI.
  • Даты и serial сохранены.
  • Hostname совпадает.
  • Цепочка проходит проверку.
  • Точка TLS найдена.
  • Renewal dry-run успешен.
  • После reload serial изменился.

Проверьте, кто действительно завершает TLS

DNS домена может указывать на CDN, облачный балансировщик или отдельный reverse proxy. В этом случае сертификат на origin вообще не виден посетителю. Сравните адрес из DNS с архитектурой, затем выполните внешний тест из другой сети. Локальный hosts-файл или корпоративный прокси легко дают другой результат.

Если сервер отдаёт несколько доменов, найдите соответствующий блок server_name и путь ssl_certificate. Сравните serial файла на диске с внешним serial. Совпадение доказывает, что reload подхватил нужный файл; несовпадение указывает на другой процесс, контейнер, proxy или старую конфигурацию.

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

certbot renew --dry-run проверяет сценарий, но успех команды ещё не гарантирует, что production использует полученный файл. После dry-run проверьте timer или cron, hook перезагрузки и права процесса на каталог сертификата. Для container deployment убедитесь, что volume смонтирован в тот контейнер, который завершает TLS.

Проверяйте минимум основной домен и вариант с www, если он обслуживается. Одна запись может иметь свежий сертификат, другая попадать в default vhost. Для wildcard отдельно контролируйте DNS challenge и доступ к учётным данным провайдера, не выводя их в журнал.

Контроль после восстановления

Проверьте сертификат не только в браузере администратора. Запустите внешний запрос из сети без корпоративного proxy, затем откройте домен на мобильной сети. Сравните serial. Если значения разные, трафик приходит на несколько узлов, и часть из них всё ещё отдаёт старый сертификат.

Для балансировщика повторите проверку несколько раз или обращайтесь к каждому backend по согласованному диагностическому адресу с правильным SNI. Не отключайте проверку hostname. Цель — найти конкретный узел, а не получить зелёный ответ любой ценой.

После исправления поставьте мониторинг срока, который проверяет публичный endpoint, а не файл на диске. Предупреждение должно приходить заранее и содержать домен, notAfter и serial. Отдельный alert нужен на ошибку renewal job. Тогда следующий сбой станет задачей до истечения, а не сообщением клиента.

Контрольная точка закрыта, когда внешний монитор, браузер и OpenSSL видят один serial и срок, а renewal dry-run проходит без ошибки. Сохраните дату следующего предупреждения и владельца домена. Проверка одного зелёного браузера недостаточна для завершения инцидента.

После изменения не удаляйте старый сертификат сразу. Убедитесь, что все узлы получили новый файл и reload прошёл. Затем уберите временные диагностические правила и проверьте, что HTTP перенаправляется на HTTPS без лишней цепочки редиректов.

Повторите проверку утром следующего дня: кеш DNS, CDN и долго живущие процессы иногда скрывают неполное переключение.

Что делать, если не помогло

Не добавляйте клиентам флаг отключения проверки. Снимите вывод s_client без приватных данных, DNS-адреса и активные пути. После восстановления выполните приёмочный чек-лист сайта и проверьте canonical после релиза. CTR1 может проверить сайт и production-контур до потери заявок.

Хотите внедрить это в своём бизнесе?

Проведём аудит CRM, разберём процессы и покажем, что можно улучшить.

Получить аудит

Частые вопросы

Похожие статьи

Хотите внедрить Битрикс24 или AI в своём бизнесе?

Разберём процессы, найдём потери и покажем, что можно автоматизировать.