Что означает "проблемы с получением пароля" в сообщении SSL_CTX_use_PrivateKey_file в журнале ошибок Nginx? - PullRequest
34 голосов
/ 21 февраля 2012

Я пытаюсь настроить SSL на Nginx. Это не работает, и я получаю следующую ошибку в журнале ошибок, который передается из библиотеки OpenSSL, с которой был скомпилирован nginx. Я не знаю, что это за библиотека, но это версия 0.8.54 nginx, и я установил ее с помощью apt-get в Ubuntu Linux.

2012/02/21 07:06:33 [emerg] 4071#0: 
SSL_CTX_use_PrivateKey_file("/exequias/certs/exequias.com.key") failed (SSL: 
error:0906406D:PEM routines:PEM_def_callback:problems getting password error:
0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:
SSL_CTX_use_PrivateKey_file:PEM lib)

Я гарантировал, что права доступа к файлу с закрытым ключом не мешают nginx его прочитать. Это закрытый ключ RSA, сгенерированный с openssl rsa.

Есть идеи, что может быть причиной этого?

Ответы [ 4 ]

55 голосов
/ 23 августа 2013

Удалить ключевую фразу:

openssl rsa -in key.pem -out newkey.pem

Если сертификат и ключ находятся вместе:

openssl rsa -in mycert.pem -out newcert.pem
openssl x509 -in mycert.pem >>newcert.pem

Источник: http://www.madboa.com/geek/openssl/#key-removepass

20 голосов
/ 21 февраля 2012

Я понял ... файл закрытого ключа, используемый с nginx, должен , а не иметь парольную фразу.Я удалил парольную фразу, и она сработала.

12 голосов
/ 28 июля 2016

Поскольку вы генерируете файл .crt с парольной фразой, вам необходимо указать одну и ту же парольную фразу для файла .key и .crt в Nginx conf, например:

server {
    ssl_password_file /path-to-your-passphrase/ssl.pass;
}

См. Документ Nginx

Или, если вам не нужна фраза-пароль для вашего файла сертификата, просто используйте инструмент ssh-keygen, чтобы сгенерировать файл следующим образом:

ssh-keygen -t rsa
2 голосов
/ 04 января 2016

Вопрос уже устарел, и nginx фактически поддерживает запрос парольной фразы при запуске, начиная как минимум с версии 1.2.Но проблема по-прежнему актуальна, потому что эта возможность была удалена из Debian в последней версии, версии 8 с nginx 1.6.Причина в том, что ввод пароля не был реализован в сценарии systemd для nginx, в то время как для apache.Запуск nginx вручную просто работает, и это не является проблемой, поскольку в любом случае требуется ручное вмешательство, здесь не используется systemd.

Ссылка: https://forum.nginx.org/read.php?2,262900,262931#msg-262931

...