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秘密鍵です。
これを引き起こしている可能性のあるアイデアはありますか?
わかった... nginxで使用する秘密鍵ファイルはnotにパスフレーズが必要です。パスフレーズを削除し、機能しました。
キーパスフレーズを削除します。
openssl rsa -in key.pem -out newkey.pem
証明書とキーが一緒になっている場合:
openssl rsa -in mycert.pem -out newcert.pem
openssl x509 -in mycert.pem >>newcert.pem
パスフレーズを使用して.crtファイルを生成するため、このようにNginx confの.keyおよび.crtファイルに同じパスフレーズを指定する必要があります。
server {
ssl_password_file /path-to-your-passphrase/ssl.pass;
}
Nginx Doc を参照してください
または、証明書ファイルのパスフレーズが必要ない場合は、ssh-keygen
次のようにファイルを生成するツール:
ssh-keygen -t rsa
質問はもう少し古く、nginxは少なくともバージョン1.2以降、起動時にパスフレーズを尋ねることを実際にサポートしています。しかし、この機能は最新リリースであるnginx 1.6のdebianから削除されているため、問題は依然として関連しています。その理由は、パスフレーズの入力がnginxのsystemdスクリプトに実装されていないのに対し、Apacheの場合です。 nginxを手動で起動することは単純に機能しますが、とにかく手動の介入が必要なので、それほど問題ではありません。ここではsystemdを使用しません。
参照: https://forum.nginx.org/read.php?2,262900,262931#msg-262931