Nginx Linux (Nginx)

Nginx — после продления сертификата сайт продолжает выдавать старую цепочку

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

После продления сертификата браузер или openssl по-прежнему получает старую цепочку. Проверять нужно именно цепочку, которую сервер передаёт клиенту с именем сайта (SNI), а не только дату локального файла.

В этой статье
  1. Симптом и границы применимости
  2. Возможные причины и как их отличить
  3. Пошаговая диагностика и исправление
  4. Как проверить результат
  5. Если проблема не устранена

#Симптом и границы применимости

После продления сертификата браузер или openssl по-прежнему получает старую цепочку. Проверять нужно именно цепочку, которую сервер передаёт клиенту с именем сайта (SNI), а не только дату локального файла.

#Возможные причины и как их отличить

Возможная причинаКак узнатьЧто делать
Сервер читает другой файлОбновление файла в одной папке не влияет на сертификат другого виртуального хоста.На диске новая цепочка есть, но ssl_certificate указывает на другой путьСверить пути из полной конфигурации
Не перечитана конфигурацияРабочие процессы продолжают обслуживать соединения с ранее загруженным сертификатом.После перезапуска/перечитывания сертификат меняетсяПроверить состояние службы и безопасно перечитать конфигурацию
Внешний прокси или несколько адресовTLS может завершаться не на том Nginx, где меняли файл.Разные IPv4/IPv6 или промежуточный прокси выдают разные цепочкиПроверить каждую конечную точку

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

  1. Уточните, какой сертификат видит посетительНа своём компьютере откройте терминал (Windows — PowerShell, Linux/macOS — Терминал). Вместо example.com подставьте домен; проверьте дату и издателя первого сертификата. Для диагностики цепочки важен флаг -showcerts: если на экране только один сертификат при наличии промежуточного, цепочка может быть неполной. Команда не изменяет сервер.
  2. Среда: Linux/macOS или Windows с установленным OpenSSL; вводится домен, без паролей
    Linux · Терминал (Bash)Команда
    Среда: Linux/macOS или Windows с установленным OpenSSL; вводится домен, без паролей.
    openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null
  1. Проверьте реальный файл в NginxПодключитесь к серверу по SSH с учётной записью, которой разрешён sudo. Посмотрите строки ssl_certificate, ssl_certificate_key и server_name. Если вывод содержит секреты из других частей конфигурации, не пересылайте его целиком. Запишите путь файла для нужного виртуального сервера и проверьте, что он соответствует новому полному сертификату, а не только отдельному файлу ключа.
    Linux · Терминал (Bash)КомандаНужен sudo
    Только чтение; nginx -T выводит конфигурацию, поэтому не публикуйте её целиком.
    sudo nginx -T 2>&1 | grep -nE "ssl_certificate|server_name|listen .*443"
  1. Проверьте состав файла и соответствие имениОткройте именно файл из ssl_certificate с помощью безопасного просмотрщика или openssl x509. Первая PEM-секция должна быть сертификатом вашего домена, затем следуют промежуточные сертификаты в порядке цепочки. Ключ держите отдельно, не отправляйте его в чат и не вставляйте в команды. Если сертификат чужого домена, не включайте его, а восстановите правильный файл из копии.
    Linux · Терминал (Bash)КомандаНужен sudo
    Путь примерный: замените его фактическим из конфигурации; команда проверяет только первый сертификат.
    sudo openssl x509 -in /etc/letsencrypt/live/example.com/fullchain.pem -noout -subject -issuer -dates
  1. Проверьте, не обслуживает ли HTTPS другой узелПосмотрите в панели DNS значения A и AAAA, а в настройках CDN или балансировщика — где завершается TLS. Если есть второй сервер, сравните сертификаты с разных адресов, указывая SNI. Не меняйте DNS наугад: у CDN может быть собственный сертификат. При доступе к целевому IP используйте openssl s_client -connect IP:443 -servername example.com.
  1. Исправьте путь и перечитайте NginxПеред изменением конфигурации сохраните копию конкретного файла и текущий путь ssl_certificate. Через редактор с правами администратора укажите файл полной цепочки, выданной удостоверяющим центром. Запустите проверку синтаксиса. Только при успешном сообщении “syntax is ok” и “test is successful” выполните reload; если проверка не прошла, верните резервную копию и не выполняйте reload.
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Среда: SSH на Linux с systemd; требуется sudo. Перечитывание влияет на все сайты этого экземпляра.
    sudo nginx -t && sudo systemctl reload nginx

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

#Как проверить результат

Повторите openssl s_client с нужным SNI через внешний интернет и, если возможно, отдельно через IPv4/IPv6. Сравните даты, издателя и количество сертификатов с новым комплектом. Откройте сайт в приватном окне: отсутствие предупреждения у одного браузера не доказывает правильность цепочки.

#Если проблема не устранена

Если старый сертификат остаётся, выясните через DNS и схему прокси, какой сервер отвечает на порт 443; проверьте, не обслуживает ли домен другой server-блок с тем же listen. При сомнениях верните прежний рабочий конфиг, а новый сертификат проверьте отдельно.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.