SSL安装问题 - “密钥值不匹配”(但它们匹配吗?)

时间:2011-01-11 14:10:07

标签: apache ssl https openssl

所以我已经发送了一个新的公共证书来安装在服务器上(.crt文件)。完成。重启apache - “FAILED”。

错误讯息:

[Tue Jan 11 12:51:37 2011] [error] Unable to configure RSA server private key 
[Tue Jan 11 12:51:37 2011] [error] SSL Library Error: 185073780 error:0B080074:
x509 certificate routines:X509_check_private_key:key values mismatch

我检查了关键值:

openssl rsa -noout -modulus -in server.key | openssl md5
openssl x509 -noout -modulus -in server.crt | openssl md5

他们匹配。

我已经检查了ssl.conf文件中的路径,并指出了正确的文件。

如果我恢复旧的(已过期的)证书文件,apache启动正常,所以它绝对不喜欢新的。

这是一个GeoTrust QuickSSL,它附带了一个“intermediate.crt”,我应该使用它代替之前使用的“ca-bundle.crt”文件

SSLCertificateFile /etc/pki/tls/certs/www.domain.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.domain.com.key
SSLCACertificateFile /etc/pki/tls/certs/intermediate.crt

任何想法我可能做错了什么?您还需要更多信息吗?

谢谢!

9 个答案:

答案 0 :(得分:78)

我也遇到了同样的错误。就我而言,我必须在验证链中提供额外的CA证书。而不是在单独的文件中提供证书和密钥,我将它们组合在.pem文件中。

但是,执行此操作时,密钥和证书以及中间证书的顺序非常重要。正确的顺序:

your private key
your certificate
(intermediate) CA certificate lowest in the hierarchy
other CA certificates higher in the hierarchy...
(intermediate) CA certificate highest in the hierarchy

答案 1 :(得分:8)

重新发布我的Rapid SSL证书(通过Namecheap购买)以处理Heartbeat错误时,新证书始终针对用于先前CSR请求的私钥发出。在第五次重新发行之后,将第四次重新发行中使用的私钥配对使事情正常。

答案 2 :(得分:8)

对于其他正在努力解决这个问题的人......

我最近在我的一台CentOS 6.5服务器上遇到了同样的问题,这是我生成KEY和CSR时的问题。

我有三个站点在虚拟主机上运行在这个服务器上,所有站点都有专用的ip,每个站点都有自己的SSL证书。

在更换其中一个证书时匆匆忙忙,我愚蠢地只是按照证书提供者指南获取CSR并在Apache中安装它,并且我被指示使用以下命令:

openssl req -new -newkey rsa:2048 -nodes -keyout domain-name-here.key -out domain-name-here.csr

安装新证书后,我还面临Apache无法启动和/var/log/httpd/ssl_error_log中的相同错误:

[error] SSL Library Error: 185073780 error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch

[error] Unable to configure RSA server private key

现在我真正应该做的就是检查我的.bash_history文件,因为我之前在CentOS中成功完成了很多次。

我应该改为运行这两个命令:

openssl genrsa -des3 -out domain-name-here.co.uk.key 2048

openssl req -new -key domain-name-here.co.uk.key -out domain-name-here.co.uk.csr

然后成功生成了CSR和KEY,我使用新获得的CSR重新申请了证书,然后应用了新证书并添加了新的密钥文件,最后Apache将干净利落地启动。

还要注意一点配置之后,我们现在在ssl实验室测试中得分A +。

答案 3 :(得分:2)

确保所有证书文件都使用ANSI进行编码,而不是UTF-8

对我来说,所有的测试都说:key,crt和csr匹配,但日志说X509_check_private_key:key values mismatch,直到我看到其中一个文件是用UTF-8编码的。

答案 4 :(得分:1)

就我而言,我有两个网站和两个微妙的不同私钥:

nginx: [emerg] SSL_CTX_use_PrivateKey_file("/some/path/server.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)

修正后,错误消息更改为提及/some/path/server.pem。请注意不同的私钥,它只在文件扩展名方面有所不同。我有2个不同的网站使用不同的密钥加密(这意味着我修复了第一个网站,但现在需要修复第二个网站)。因此,请务必仔细阅读错误消息!

答案 5 :(得分:0)

我们还遇到了NameCheap的问题,发行的Cert与用于生成以前的CERT的CSR相匹配。我们通过他们的支持页面告诉他们,他们说他们已经知道了这个问题。

答案 6 :(得分:0)

Dynadot似乎与他们重新发布的RapidSSL证书存在相同的问题。我刚收到一份非工作证书,然后又引发了Apache的另一个问题,当修复后我发现这个问题并在这里回答原始问题,感谢所有人的信息。我将废弃RapidSSL证书,因为我无论如何都有一些客户端兼容性问题,而是从AlphaSSL购买一个新的。

答案 7 :(得分:0)

根据Apache网站上的常见问题解答,证书和密钥的模数和公共指数必须匹配才能进行有效检查。

http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#verify

正如您和其他人已经说过的那样,与证书发行人合作

答案 8 :(得分:0)

在我的案例中最棘手的是设置SSLCACertificateFile。一旦证书公司颁发了我们的证书,我们就会收到另外两个证书:中间证书和根证书。哪一个用于SSLCACertificateFile?既..

这是我的证书链的样子:

enter image description here

对于SSLCACertificateFile,我必须按照上述顺序将digicert_sha2_high_assurance_server_ca.crt和digicert.crt连接到一个文件中。