Nginx 错误日志中的“SSL_CTX_use_PrivateKey_file”“获取密码错误的问题”表示啥?
Posted
技术标签:
【中文标题】Nginx 错误日志中的“SSL_CTX_use_PrivateKey_file”“获取密码错误的问题”表示啥?【英文标题】:What does "SSL_CTX_use_PrivateKey_file" "problems getting password error" indicate in Nginx error log?Nginx 错误日志中的“SSL_CTX_use_PrivateKey_file”“获取密码错误的问题”表示什么? 【发布时间】:2012-03-11 22:21:03 【问题描述】:我正在尝试在 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
生成。
任何想法可能导致这种情况?
【问题讨论】:
【参考方案1】:我知道了...与 nginx 一起使用的私钥文件必须不有密码。我删除了密码,它起作用了。
【讨论】:
我不记得了——我可能只是用openssl
生成了一个新的私钥,并且忘记了密码。
谢谢,我记得密码。
@CrossleSong ssh-keygen -t rsa
并且不要输入密码来生成没有密码的密钥。【参考方案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
【讨论】:
非常感谢!我在R'lyeh。你救了我的理智。 不客气 :-) 我听到了。我写这个答案已经两年了,现在我什么都不记得了:D #insanityrealized【参考方案3】:这个问题现在有点老了,至少从 1.2 版本开始,nginx 实际上支持在启动时询问密码。但是这个问题仍然存在,因为这个功能已经从 debian 的最新版本中删除,版本 8 和 nginx 1.6。原因是密码输入尚未在 nginx 的 systemd 脚本中实现,而对于 apache 却已实现。手动启动nginx很简单,也不是什么大问题,反正需要人工干预,这里没用systemd。
参考:https://forum.nginx.org/read.php?2,262900,262931#msg-262931
【讨论】:
【参考方案4】:因为您生成带有密码的 .crt 文件,所以您需要像这样在 Nginx conf 中为您的 .key 和 .crt 文件指定相同的密码
server
ssl_password_file /path-to-your-passphrase/ssl.pass;
见Nginx Doc
或者,如果您不需要证书文件的密码,只需使用ssh-keygen
工具生成文件,如下所示:
ssh-keygen -t rsa
【讨论】:
@JosephCoco 是的,你是对的。我需要编辑我的答案。 完美:thumbsup:以上是关于Nginx 错误日志中的“SSL_CTX_use_PrivateKey_file”“获取密码错误的问题”表示啥?的主要内容,如果未能解决你的问题,请参考以下文章