所以我已经发送了一个新的公共证书来安装在服务器上(.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
任何想法我可能做错了什么?您还需要更多信息吗?
谢谢!
答案 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
?既..
这是我的证书链的样子:
对于SSLCACertificateFile
,我必须按照上述顺序将digicert_sha2_high_assurance_server_ca.crt和digicert.crt连接到一个文件中。