SystemdDoctor
служба не работает nginx сертификаты частое

nginx: ошибки сертификата при запуске (SSL_CTX_use_PrivateKey)

Сообщения вида SSL_CTX_use_PrivateKey_file(... ) failed или PEM_read_bio_X509 означают проблему с файлами сертификата: ключ не соответствует сертификату, файл не в том формате или недоступен для чтения. nginx проверяет это при запуске и без сертификата не поднимается.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Ключ не соответствует сертификату

    После повторного выпуска сертификата легко оставить старый ключ. Файлы по отдельности корректны, но пара не совпадает.

  2. Файл в неверном формате или повреждён

    nginx ждёт формат PEM. Файл в DER, файл с лишними строками или обрезанный при копировании не читается.

  3. Нет прав на чтение ключа

    Ключ читает главный процесс nginx от root, но если каталог закрыт для него (например по метке SELinux) или файл принадлежит другому пользователю с правами 0600, чтение не пройдёт.

  4. Отдан только сертификат без промежуточных

    Браузеры сообщат о недоверенной цепочке, а сам nginx запустится. Это не отказ запуска, но частая ошибка при ручной установке сертификата.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Показывает, какой файл сертификата не удалось загрузить.

sudo nginx -t

Разбирает сертификат: кому выдан, кем и до какого числа.

sudo openssl x509 -in /путь/cert.pem -noout -subject -issuer -enddate

Какой сертификат сервер отдаёт фактически: полезно после обновления.

echo | openssl s_client -connect localhost:443 -servername example.org 2>/dev/null | openssl x509 -noout -subject -enddate

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Ключ не соответствует сертификату
Почему происходит
После повторного выпуска сертификата легко оставить старый ключ. Файлы по отдельности корректны, но пара не совпадает.
Как проверить
Сравните отпечатки открытой части.
sudo openssl x509 -noout -modulus -in /etc/ssl/certs/site.crt | openssl md5
sudo openssl rsa -noout -modulus -in /etc/ssl/private/site.key | openssl md5
Как исправить
Возьмите ключ и сертификат из одной выдачи: отпечатки должны совпадать.
2. Файл в неверном формате или повреждён
Почему происходит
nginx ждёт формат PEM. Файл в DER, файл с лишними строками или обрезанный при копировании не читается.
Как проверить
Попробуйте разобрать файлы.
sudo openssl x509 -in /etc/ssl/certs/site.crt -noout -subject -enddate
sudo head -1 /etc/ssl/private/site.key
Как исправить
Переконвертируйте в PEM или скачайте файлы заново. Первая строка ключа должна начинаться с «-----BEGIN».
3. Нет прав на чтение ключа
Почему происходит
Ключ читает главный процесс nginx от root, но если каталог закрыт для него (например по метке SELinux) или файл принадлежит другому пользователю с правами 0600, чтение не пройдёт.
Как проверить
Проверьте права по пути.
namei -l /etc/ssl/private/site.key
Как исправить
Оставьте права 0600 с владельцем root и убедитесь, что каталог доступен главному процессу.
4. Отдан только сертификат без промежуточных
Почему происходит
Браузеры сообщат о недоверенной цепочке, а сам nginx запустится. Это не отказ запуска, но частая ошибка при ручной установке сертификата.
Как проверить
Посмотрите число сертификатов в файле.
sudo grep -c "BEGIN CERTIFICATE" /etc/ssl/certs/site.crt
Как исправить
Соберите файл с полной цепочкой: сначала сертификат домена, затем промежуточные. Для Let’s Encrypt это fullchain.pem.

Пример вывода

Ключ не соответствует сертификату. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

nginx[7120]: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/ssl/private/site.key") failed (SSL: error:05800074:x509 certificate routines::key values mismatch)
nginx[7120]: nginx: configuration file /etc/nginx/nginx.conf test failed

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация nginx: настройка HTTPS документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено подменой ключа от другой выдачи сертификата.
    собственная проверка, systemd 255
    сверено 15 сентября 2026