Подтвердить что ты не робот

Что такое "SSL_CTX_use_PrivateKey_file" "проблемы с получением ошибки пароля" в журнале ошибок Nginx?

Я пытаюсь настроить 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.

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

4b9b3361

Ответ 1

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

Ответ 2

Удаление фразы пароля:

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

Ответ 3

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

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

См. Nginx Doc

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

ssh-keygen -t rsa

Ответ 4

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

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