在Nginx错误日志中,“SSL_CTX_use_PrivateKey_file”“获取密码错误的问题”是什么意思?

时间:2012-02-21 15:40:07

标签: ssl https nginx openssl private-key

我正在尝试在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读取它。它是一个RSA私钥,使用openssl rsa生成。

任何可能导致此问题的想法?

4 个答案:

答案 0 :(得分:54)

删除密钥密码:

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

答案 1 :(得分:19)

我明白了...与nginx一起使用的私钥文件必须有密码。我删除了密码并且它有效。

答案 2 :(得分:10)

因为您使用密码短语生成.crt文件,所以您需要为Nginx conf中的.key和.crt文件指定相同的密码

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

请参阅Nginx Doc

或者,如果您不需要证书文件的密码,只需使用ssh-keygen工具生成如下文件:

ssh-keygen -t rsa

答案 3 :(得分:2)

这个问题现在有点老了,nginx实际上支持启动时的密码短语,因为至少版本1.2。但问题仍然存在,因为在最新版本的版本8中使用nginx 1.6已将此功能从debian中删除。原因是密码短语输入还没有在nginx的systemd脚本中实现,而它已经用于apache。手动启动nginx只是起作用,并且它不是一个问题,因为无论如何都需要手动干预,这里没有使用systemd。

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