我无法设置SSL。我在谷歌上搜索了一下,找到了一些解决方案,但没有一个对我管用。请帮我个忙。
以下是我尝试重新启动nginx时收到的错误:
root@s17925268:~# service nginx restart
Restarting nginx: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/ssl/ssl.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
nginx: configuration file /etc/nginx/nginx.conf test failed
我的证书来自StartSSL,有效期为1年。
以下是我的测试结果:
- 证书和私钥没有尾随空格。
- 我没有使用默认的Server.key文件。
- 我检查了nginx.conf,指令指向正确的私钥和证书。
我还检查了模数,我得到了密钥和证书的不同模数。
谢谢你的帮助。:)
17条答案
按热度按时间7uzetpgm1#
一旦你确定它们不匹配,你仍然有一个问题--如何处理它。通常,证书可能只是不正确地组装。当CA签署您的证书时,他们会向您发送如下所示的阻止
他们还会向您发送一个捆绑包(通常是两个证书),代表他们向您授予证书的权限。这将看起来类似于
除了不幸的是,它们不会被如此清晰地贴上标签。
因此,一种常见的做法是将所有这些都捆绑到一个文件中--您的证书,然后是签名证书。但由于它们不容易区分,有时会发生有人不小心将它们按其他顺序排列--先签署证书,然后是最终证书--而没有注意到的情况。在这种情况下,您的证书将与您的密钥不匹配。
您可以通过运行以下命令进行测试,以查看证书认为它代表什么
在顶部附近,您应该看到“Subject:”,然后是看起来像您的数据的内容。如果它看起来像您的CA,则您的捆绑包可能顺序错误;您可以尝试创建备份,然后将最后一个证书移到开头,希望这就是您的证书。
如果这不起作用,你可能只需要重新颁发证书。当我创建CSR时,我喜欢清楚地标记它用于哪个服务器(而不仅仅是ssl.key或Server.key),并在名称中包含日期的副本,如mydomain.20150306.key等,这样它们的私钥和公钥对不太可能与另一组密钥混淆。
ibps3vxo2#
1.确保您的证书和密钥为PEM格式。如果不是,则使用openssl命令进行转换
1.检查公钥的MD5散列,以确保它与私钥中的内容匹配
jobtbby33#
我遇到这个问题是因为我以错误的顺序添加了包和证书,所以这可能会对其他人有所帮助。
之前(这是错误的):
之后(这是正确的)
请不要忘记更新适当的配置文件(现在SSLCERTIFICATE必须指向链接的CRT)为
从nginx manpage:
如果服务器证书和捆绑包以错误的顺序连接,nginx将无法启动,并显示错误消息:
zu0ti5jz4#
我得到了一个MD5散列,密钥和证书的结果不同。
这说明了一切。您的密钥和证书不匹配。
模数应该匹配。确保你有正确的钥匙。
o2gm4chl5#
如果发生这种情况,并且您使用的是We‘s Encrypt/certbot,原因很可能是您使用的是
chain.pem
而不是fullchain.pem
。应该是这样的:
请参阅certbot文档“我的证书在哪里?”
l7mqbcuq6#
我也有同样的问题,最后通过更改证书文件中pem块的顺序解决了它。
证书块应该放在文件的开头,然后是中间块,然后是根块。
我通过比较有问题的证书文件和正常工作的证书文件来认识到这个问题。
u7up0aaq7#
我在Nginx上也遇到了同样的问题,但下面的帮助我解决了这个问题。
我已经删除了捆绑包,并用CRT文件更新了它。
该捆绑包不是100%必需的,但它提高了兼容性。
kadbb4598#
我对这个问题的5点看法是:
我也有同样的问题。看了大约一个小时后,我发现我把证书贴错了。
如果您遇到这样的错误,请查看您的证书。
xxe27gdn9#
在我的例子中,我想要更改SSL证书,因为我已经更改了服务器,所以我必须使用以下命令创建一个新的CSR:
我已经将mysite.csr文件发送给公司的SSL提供商,在我收到证书CRT之后,我重新启动了nginx,我收到了这个错误
经过大量调查,发现KEY文件中的模块与CRT文件中的模块不一致
因此,为了使其正常工作,我创建了一个新的CSR文件,但我必须使用以下命令更改文件的名称
然后,我从公司供应商那里收到了一个新的CRT文件,重新启动nginx,它起作用了。
n3h0vuf210#
当您的CA颁发中间证书时也会发生这种情况
我在nginx上遇到了这个问题(两次),这篇文章中的解决方案都没有解释这个问题。一位名叫Marco的善良绅士在这里发表的博客文章就是这样写的,我把它贴在这里,给那些遇到我所看到的东西的人。https://medium.com/@mrkdsgn/steps-to-install-a-go-daddy-ssl-certificate-on-nginx-on-ubuntu-14-04-ff942b9fd7ff
在我的例子中,Go-Papy是CA,这是特定于他们如何发布证书和中间证书捆绑包的。
以下是Marco的博客文章节选
使用Nginx时,如果您的CA包含中间证书,则必须创建一个包含您的证书和CA的中间证书的单链证书文件。
您可以使用此命令创建一个名为example.com.chained.crt的组合文件:
cat example.com.crt intermediate.crt > example.com.chained.crt
xe55xuns11#
在我的情况下,问题是我在CLI界面中没有输入任何数据就创建了服务器。当我重生克氏物并改变所有领域:城市、州等时,一切都变好了。
k10s72fa12#
当我将bundle.crt和Main证书组合在一起时,就发生了这种情况。原因是我复制了bundle.crt下面的主证书。应该是相反的情况
1/主证书2/bundle.crt
bq9c1y6613#
对于Nginx:
1.
openssl req -newkey rsa:2048 -nodes -keyout domain.com.key -out domain.com.csr
1.SSL文件
domain_com.crt
和domain_com.ca-bundle
文件,然后将新文件复制到粘贴domain.com.chained.crt
中。3:添加nginx文件:
1.
ssl_certificate /home/user/domain_ssl/domain.com.chained.crt;
1.
ssl_certificate_key /home/user/domain_ssl/domain.com.key;
Lates重启Nginx。
rslzwgfq14#
SL_CTX_USE_PrivateKey(“/etc/nginx/ssl/file”)失败(SSL:Error:0B080074:x509证书例程:X509_CHECK_PRIVATE_KEY:密钥值不匹配)
当证书私钥(
ssl_certificate_key
,例如.key
或.pem
文件)与您的Nginx配置(检查nginx.conf
或sites-enabled/
中的)中的公共证书文件(ssl_certificate
)不匹配时,可能会发生此错误。确保两个文件匹配。有关更多详细信息,请查看Nginx错误日志(例如
/var/log/nginx/error.log
)。wwodge7n15#
在我的情况下,我必须连接我的域的证书。
并在配置文件/etc/nginx/nginx.conf中
重新启动服务,一切正常。
来源步骤2:https://www.namecheap.com/support/knowledgebase/article.aspx/9781/2238/nginx-ssl-error0b080074x509-certificate-routines-x509checkprivatekeykey-values-mismatch