#Что происходит и когда применима инструкция
Обновлённый серверный сертификат может быть действительным, но некоторым клиентам не хватает промежуточного сертификата для построения цепочки доверия. Проверьте, что веб-сервер передаёт leaf и требуемые промежуточные сертификаты из правильного fullchain, и отделите ошибку цепочки от неверного имени или устаревшего корневого хранилища клиента.
#Причины: как различить похожие случаи
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| В конфигурации указан только cert.pemNginx отдаёт лишь конечный сертификат без промежуточных. | В s_client -showcerts виден один сертификат, а клиент сообщает об отсутствии issuer. | Использовать проверенный fullchain.pem. |
| Служба не загрузила новый комплектНа диске новый fullchain, но работающий Nginx не был перезагружен или использует другой путь. | Отпечаток/дата публичного сертификата не совпадают с файлом. | Найти активный путь и применить только после nginx -t. |
| Неверный набор промежуточных сертификатовСмешаны сертификаты разных цепочек либо неправильно объединены. | Сертификаты из цепочки не соответствуют центру, указанному issuer leaf. | Использовать комплект, выданный действующим удостоверяющим центром. |
#Диагностика и пошаговое устранение
- 1. Зафиксируйте, у кого именно ошибкаОткройте сайт с разных браузеров или клиентских устройств. Если ошибка возникает лишь на некоторых старых устройствах, проверьте их доверенные корневые центры отдельно; если многие современные клиенты сообщают
unable to get local issuer certificate, в первую очередь исследуйте цепочку сервера. Не советуйте нажимать «Всё равно перейти» и не отключайте проверку сертификатов.
- 2. Посмотрите публичный набор сертификатовИз терминала с OpenSSL запросите сервер по имени, указав SNI. Параметр
-showcertsвыводит предъявленные сервером сертификаты,-servernameнужен для правильного виртуального хоста. Сравните число и порядок PEM-блоков с ожидаемой цепочкой. СтрокаVerify return codeполезна, но результат также зависит от локального набора доверенных корней.Linux · Терминал (Bash)КомандаЗаменить имя; сертификаты публичные, приватный ключ здесь не показывается.openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null
- 3. Определите, где реально завершается TLSПроверьте, проходит ли запрос через CDN, балансировщик, прокси или напрямую на Nginx/Apache. Если сертификат предъявляет CDN, локальная замена
fullchain.pemне решит публичную проблему — настройте сертификат на внешней точке. При использовании Fastpanel/иной панели откройте карточку домена → HTTPS и посмотрите, какой сертификат привязан к хосту; не предполагайте, что файлы Certbot управляют панелью.
- 4. Сравните публичный сертификат и файл на сервереЕсли сертификаты ведёт Certbot, проверьте
certbot certificates, запишите Certificate Path. На Nginx по SSH найдитеssl_certificateи проверьте, что указан файлfullchain.pem, а не одинcert.pem;privkey.pemнужен только дляssl_certificate_keyи должен оставаться недоступным публике. Не переносите закрытый ключ в каталог сайта.Linux · Терминал (Bash)КомандаНужен sudoКоманды только читают данные, но вывод nginx -T может содержать конфиденциальные параметры.sudo certbot certificatessudo nginx -T
- 5. Подготовьте правильную цепочку из штатного источникаПри выпуске Let’s Encrypt обычно используйте его управляемый
live/.../fullchain.pem. Для другого удостоверяющего центра возьмите промежуточный сертификат из официального кабинета/хранилища этого центра и соберите цепочку в правильном порядке: сначала сертификат сервера, затем промежуточные. Не добавляйте произвольные корневые сертификаты и не делайтеcatфайлов с неподтверждённым происхождением.
- 6. Сохраните конфиг и исправьте путь сертификатаПеред изменением сохраните копию блока Nginx
serverи исходные пути. Поменяйте ровно директивуssl_certificateна проверенный полный комплект для этого имени;ssl_certificate_keyдолжен соответствовать закрытому ключу сертификата. Если нет уверенности в соответствии пары — используйте проверку у администратора, не генерируйте новый закрытый ключ наугад. При управлении через панель применяйте изменение через интерфейс панели.
- 7. Примените конфигурацию только после проверкиЗапустите
sudo nginx -t: ожидается успешная проверка. При ошибке mismatch key/certificate ничего не перезагружайте; верните сохранённые пути или исправьте корректную пару. Только после успешного теста запуститеsudo systemctl reload nginx. Обратите внимание, что тест проверяет конфигурацию, но не гарантирует правильности цепочки у внешнего CDN.Linux · Терминал (Bash)С осторожностьюНужен sudoВторую строку выполнять лишь если первая завершилась успешно. Команда перезагрузки выполняется только при успешной проверке конфигурации (оператор &&). При ошибке исправьте конфигурацию и повторите проверку; не запускайте перезагрузку вручную.sudo nginx -t && sudo systemctl reload nginxКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- 8. Проверьте цепочку извне и автоматическое продлениеС другой машины повторите
openssl s_client -showcertsи сравните промежуточные сертификаты. Проверяйте корневое имя и www отдельно, если они обслуживаются разными блоками. Убедитесь, что задача продления будет обновлять именно путь, используемый веб-сервером; если ошибка остаётся — приложите журнал Nginx и вывод публичной проверки без секретов.
#Как проверить, что неисправность устранена
Успех: современный браузер открывает HTTPS без предупреждения; OpenSSL видит корректную цепочку до доверенного центра, публичный leaf не просрочен и содержит нужное имя. Если ошибается только один старый клиент, диагностируйте его корневое хранилище отдельно.
#Если не получилось и как отменить правки
Верните прежнюю директиву ssl_certificate и путь ключа из сохранённого конфига, проверьте nginx -t и перезагрузите конфигурацию. Не удаляйте новый или старый сертификат до выяснения, какой из них используется автопродлением.
Если причина не установлена, соберите точный текст ошибки, время, имя домена, результаты проверок без паролей и приватных ключей. Передайте их ответственному администратору или поддержке регистратора, DNS-провайдера либо хостинга. Не повторяйте опасные изменения без резервной копии.