SSL 安装问题 - “键值不匹配”(但它们匹配?)
Posted
技术标签:
【中文标题】SSL 安装问题 - “键值不匹配”(但它们匹配?)【英文标题】:SSL install problem - "key value mismatch" (but they do match?) 【发布时间】:2011-06-07 04:57:56 【问题描述】:因此,我收到了一个新的公共证书以安装在服务器上(.crt 文件)。完毕。重新启动 apache - “失败”。
错误信息:
[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
任何想法我可能做错了什么?您需要更多信息吗?
谢谢!
【问题讨论】:
【参考方案1】:我也遇到了同样的错误。就我而言,我必须在验证链中提供额外的 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,这让我走上了正轨。问题出在我的中间证书文件中,但就我而言,我不必将它们一起修复。对我来说,问题出在 GoDaddy 为我们的客户提供的中间证书包 (gd_bundle_xxx.crt) 文件中。 GoDaddy 发布了此文件的不同“库存”版本,并以某种方式设法发送了一个对于我们的 key/crt 组合不正确的版本。对于 GoDaddy,您可以从此存储库中提取其中间包的不同版本:certs.godaddy.com/anonymous/repository.pki 谢谢!证书之后的中间体,而不是之前!呵呵。 我在使用 open ssl 从加密的 p12 文件生成的密钥中遇到了同样的问题。生成的 pem 文件导致错误,这就是解决方案。 在我制作了一个包含:您的私钥、您的证书的单个捆绑包之后,我如何在 apache 中使用它?谢谢【参考方案2】:我最近在我的一台 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+。
【讨论】:
正在尝试为 Apache HTTP 服务器设置 SSL。这个答案有效!谢谢! 证书提供者的方法导致文件导致 Apache 无法启动而没有显示任何错误! Apache 和证书提供者部分的主要失败。托尼的回答拯救了我的一天。 您是如何在命令行中“使用新获得的CSR重新申请证书,然后申请新证书并添加新密钥文件”,请您详细说明【参考方案3】:在重新颁发我的 Rapid SSL 证书(通过 Namecheap 购买)以处理 Heartbeat 错误时,新证书始终是针对用于先前 CSR 请求的私钥颁发的。大约在第五次重发后,将其与第四次重发尝试中使用的私钥配对,一切正常。
【讨论】:
我使用了相同的 CSR,并且在第二次尝试时总是得到正确的。 同样的问题对我们来说也是如此。看来直接使用 rapidssl.com 重发工具可能是“修复”。 更新:Namecheap 的工具坏了,改用products.geotrust.com/geocenter/reissuance/reissue.do。我可以确认它工作正常。 @MichaelPasqualone,我非常感谢您的评论。我也可以确认 Namecheap 的工具已损坏,并且 geotrust 链接确实有效。 @MichaelPasqualone 我想在这里表达“谢谢”。您提供的 GeoTrust 链接可以正常工作。对于使用 Namecheap 工具的其他人,只需将这些尝试中的所有内容都扔掉,然后从上面的链接重新开始。获取邮件链接后使用左侧的“补发”链接。【参考方案4】:确保所有证书文件都使用ANSI
编码,而不是UTF-8
。
对我来说,所有测试都说:key、crt 和 csr 确实匹配,但日志说 X509_check_private_key:key values mismatch
,直到我看到其中一个文件被编码为 UTF-8
。
【讨论】:
【参考方案5】:就我而言,我有两个站点和两个微妙不同的私钥:
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 个使用不同密钥加密的不同站点(这意味着我已经修复了第一个站点,但现在需要修复第二个站点)。所以一定要仔细阅读错误信息!
【讨论】:
【参考方案6】:我们也遇到了 NameCheap 的问题,颁发的 Cert 与用于生成先前 CERT 的 CSR 匹配。我们通过他们的支持页面让他们知道,他们说他们已经知道这个问题。
【讨论】:
【参考方案7】:根据 Apache 网站上的常见问题解答,证书和密钥的模数和公共指数必须匹配,这样才是有效的检查。
http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#verify
正如您和其他人已经说过的,与证书颁发者合作
【讨论】:
【参考方案8】:就我而言,最棘手的一点是设置SSLCACertificateFile
。一旦证书公司颁发了我们的证书,我们还收到了两个额外的证书:一个中间证书和一个根证书。 SSLCACertificateFile
使用哪一个?两者都..
这是我的证书链的样子:
对于SSLCACertificateFile
,我必须按照上述顺序将digicert_sha2_high_assurance_server_ca.crt 和digicert.crt 连接到一个文件中。
【讨论】:
【参考方案9】:Dynadot 似乎对他们重新颁发的 RapidSSL 证书有同样的问题。我刚刚收到一个无效的证书,然后触发了 Apache 的另一个问题,当这个问题得到解决时,我在这里找到了这个问题并回答了原始问题,感谢大家提供的信息。我将废弃 RapidSSL 证书,因为无论如何我都有一些客户端兼容性问题,而是从 AlphaSSL 购买一个新证书。
【讨论】:
以上是关于SSL 安装问题 - “键值不匹配”(但它们匹配?)的主要内容,如果未能解决你的问题,请参考以下文章
hibernate错误:Cannot add or update a child row: a foreign key constraint fails