Ошибки

Ошибка nginx cannot load certificate: nginx не может прочитать сертификат

nginx не смог прочитать файл из строки ssl_certificate: файла нет по этому пути, в нём не сертификат или не хватило прав. Сверьте путь с ответом команды sudo certbot certificates и исправьте его в файле сайта.

Обновлено 10.10.2026≈ 6 мин чтения
Содержание 10

Что сделать прямо сейчас

  1. Посмотрите, чем кончается сообщение, — шаг 1.
  2. Узнайте правильный путь к сертификату — шаг 2.
  3. Исправьте путь в файле сайта — шаг 3.
  4. Проверьте и примените настройки — шаг 4.

Все команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

Что значит это сообщение

2026/10/09 12:00:00 [emerg] 2345#2345: cannot load certificate "/etc/letsencrypt/live/example.com/fullchain.pem": BIO_new_file() failed (SSL: error:…:system library::No such file or directory:calling fopen(/etc/letsencrypt/live/example.com/fullchain.pem, r) error:…:BIO routines::no such file)
nginx: configuration file /etc/nginx/nginx.conf test failed

cannot load certificate — «не удаётся загрузить сертификат». В кавычках — путь из строки ssl_certificate. В скобках после слова SSL — что ответила библиотека OpenSSL, которая читает сертификаты; вместо многоточий у вас будут коды из цифр и букв. Дата, время и номер процесса у вас будут свои. В других сборках nginx та же строка начинается со слов nginx: [emerg].

Файла и номера строки в этом сообщении нет. Где написан путь, покажет команда из шага 3.

Если в сообщении cannot load certificate key, дело в строке ssl_certificate_key — в файле ключа. Шаги те же.

Шаг 1. Узнайте причину по концу сообщения

Конец сообщенияЧто случилось
No such file or directory и no such fileФайла по этому пути нет: опечатка в пути, сертификат лежит в другой папке или его ещё не выпускали
Permission deniedНе хватило прав. Проверку запустили без sudo — см. страницу nginx -t: Permission denied
PEM_read_bio_X509_AUX() failedФайл есть, но в нём не сертификат — например, в строке ssl_certificate указан ключ privkey.pem
PEM_read_bio_PrivateKey() failedФайл есть, но в нём не ключ — например, в строке ssl_certificate_key указан fullchain.pem

Шаг 2. Найдите правильный путь к сертификату

sudo certbot certificates

Команда покажет все сертификаты, которые выпустил Certbot. У каждого есть строка Certificate Path: — путь для ssl_certificate — и строка Private Key Path: — путь для ssl_certificate_key. Если сертификат на одно имя выпускали ещё раз, рядом может оказаться второй, с окончанием -0001 в названии папки.

Если команда ответила, что сертификатов нет, или её нет на сервере, сертификат ещё не выпускали. Выпустите его по инструкции Как поставить сертификат на свой VPS — Certbot сам пропишет его в настройки nginx.

Файлы Let’s Encrypt лежат в папке /etc/letsencrypt/live/ и названы так: fullchain.pem — сертификат, его указывают в строке ssl_certificate; privkey.pem — ключ, его указывают в строке ssl_certificate_key.

Шаг 3. Исправьте путь в файле сайта

sudo grep -Rn 'ssl_certificate' /etc/nginx/sites-enabled/ /etc/nginx/conf.d/

Ключ -R заставляет grep заходить по ссылкам из sites-enabled в настоящие файлы, -n показывает номер строки. Пример ответа:

/etc/nginx/sites-enabled/example.com:12:    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pm;
/etc/nginx/sites-enabled/example.com:13:    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Здесь в строке 12 опечатка: fullchain.pm вместо fullchain.pem. Откройте файл из сообщения сразу на нужной строке: число после знака + — номер строки из сообщения, путь — тот, что стоит перед двоеточием.

sudo nano -l +12 /etc/nginx/sites-available/example.com

Если в сообщении путь начинается с /etc/nginx/sites-enabled/, откройте файл с тем же именем в папке /etc/nginx/sites-available/ — там лежит оригинал, а в sites-enabled только ссылка на него. Как это проверить, написано в разделе «Какой файл открывать».

Поставьте в строки пути из ответа sudo certbot certificates. Должно получиться так:

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Сохраните файл: Ctrl+O, Enter, затем Ctrl+X.

Если сертификат ещё не выпускали

Так бывает, когда файл сайта скопирован с другого сервера. Поставьте решётку # в начале строк, которые относятся к HTTPS: строк listen с портом 443, строк, которые начинаются с ssl_, и строк, где есть путь /etc/letsencrypt/. Решётка выключает строку, и nginx её не читает. Примените настройки по шагу 4, а затем выпустите сертификат по инструкции Как поставить сертификат на свой VPS.

Шаг 4. Проверьте и примените настройки

Проверьте настройки ещё раз командой sudo nginx -t. Когда в ответе будут слова syntax is ok и test is successful, примените их:

sudo systemctl reload nginx

Если команда ничего не ответила, настройки применены.

Как проверить

sudo nginx -t отвечает syntax is ok и test is successful. Откройте https:// и адрес сайта в браузере: в адресной строке не должно быть предупреждения.

Похожие ошибки

СообщениеЧем отличается
key values mismatchОба файла на месте, но ключ от другого сертификата
no "ssl_certificate" is definedСтроки ssl_certificate в блоке нет совсем
nginx -t: Permission deniedПроверка запущена без sudo
open() failedНе найден другой файл — из строки include или журнал

Тексты сообщений на этой странице сверены с исходным кодом nginx 1.24.0 — эта версия стоит в Ubuntu 24.04. В других версиях слова могут немного отличаться.

Источники

Сверено 9–10 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 10.10.2026