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、c​​rt 和 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

ssl android studio的标签不匹配错误-wifi问题

IIS6:从命令行创建/安装 SSL 自签名证书

同一证书文件中的多个 APNS 证书

ssl证书与域名不匹配出错怎么办

SSL 2061_牛棚安排_匹配