web-dev-qa-db-ja.com

Nginxエラーログで「SSL_CTX_use_PrivateKey_file」「パスワード取得エラーの問題」は何を示していますか?

NginxでSSLをセットアップしようとしています。動作せず、nginxがコンパイルされたOpenSSLライブラリから渡されるエラーログに次のエラーが表示されます。そのライブラリが何であるかはわかりませんが、nginxのバージョン0.8.54であり、Ubuntu Linuxでapt-getを使用してインストールしました。

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による読み取りを停止しないことを確認しました。これは、openssl rsaで生成されたRSA秘密鍵です。

これを引き起こしている可能性のあるアイデアはありますか?

34
Alex D

わかった... nginxで使用する秘密鍵ファイルはnotにパスフレーズが必要です。パスフレーズを削除し、機能しました。

20
Alex D

キーパスフレーズを削除します。

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

55

パスフレーズを使用して.crtファイルを生成するため、このようにNginx confの.keyおよび.crtファイルに同じパスフレーズを指定する必要があります。

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

Nginx Doc を参照してください

または、証明書ファイルのパスフレーズが必要ない場合は、ssh-keygen次のようにファイルを生成するツール:

ssh-keygen -t rsa
12
sudoz

質問はもう少し古く、nginxは少なくともバージョン1.2以降、起動時にパスフレーズを尋ねることを実際にサポートしています。しかし、この機能は最新リリースであるnginx 1.6のdebianから削除されているため、問題は依然として関連しています。その理由は、パスフレーズの入力がnginxのsystemdスクリプトに実装されていないのに対し、Apacheの場合です。 nginxを手動で起動することは単純に機能しますが、とにかく手動の介入が必要なので、それほど問題ではありません。ここではsystemdを使用しません。

参照: https://forum.nginx.org/read.php?2,262900,262931#msg-262931

2
6trouille