使用 Godaddy 颁发的证书时“公钥证书和私钥不匹配”[关闭]

Posted

技术标签:

【中文标题】使用 Godaddy 颁发的证书时“公钥证书和私钥不匹配”[关闭]【英文标题】:"Public key certificate and private key doesn't match" when using Godaddy issued certificate [closed] 【发布时间】:2011-10-08 21:04:25 【问题描述】:

我正在尝试在我在 Amazon AWS 上设置的新负载均衡器上安装 GoDaddy SSL 证书。我最初在 Godaddy 使用 keytool 程序创建了证书,用于直接安装在 Glassfish 3.1 服务器(Amazon linux ami)上。我直接在服务器上进行设置没有问题。我现在需要将证书从 Web 服务器移动到新的负载均衡器。 Amazon 要求私钥和证书必须是 PEM 格式,所以我使用 GoDaddy 的“rekey”工具来创建新证书。当我在 AWS Mgmt 控制台的负载均衡器设置屏幕中加载它们时,我收到错误消息:“公钥证书和私钥不匹配。”

这是我创建密钥的方式:

$ openssl genrsa -des3 -out private.key 2048
$ openssl req -new -key private.key -out apps.mydomain.com.csr

然后我在“重新生成密钥”过程中将 .csr 文件提交给 GoDaddy。更新密钥完成后,我下载了 2 个新创建的证书(apps.mydomain.com.crt 和 gd_bundle.crt)。我下载它们时选择(Apache)作为服务器类型(我也尝试过“其他”和“Cpanel”,但看起来都一样)。

此时,我使用以下命令从 private.key 文件中删除加密:

$ openssl rsa -in private.key -out private.pem

此时,我返回 AWS Mgmt 控制台,创建负载均衡器,添加安全服务器重定向并将以下文件的内容放在屏幕上要求设置 ssl 证书的相应字段中:

private.pem --> Private Key
apps.mydomain.com.crt --> Public Key Certificate
gd_bundle.crt --> Certificate Chain

当我单击“继续按钮”时,我收到错误消息“错误:公钥证书和私钥不匹配。”

-有没有一种方法可以测试我是否从亚马逊收到了有效的错误消息?当我非常严格地遵循 GoDaddy 的说明时,密钥不匹配,这对我来说似乎很奇怪。

在创建 .csr 之前,我尝试创建没有 RSA 加密的 private.key 文件,但这似乎没有任何区别。

我还假设我从 GoDaddy 下载的 .crt 文件是 .PEM 格式,但我不确定如何验证这一点。

有什么想法吗?

【问题讨论】:

Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?。 这个帖子已经有3年多了,为什么还要现在搬呢? Felby - 人们经常说,“...但是看到这个帖子和那个帖子”。因此,仅仅保持新帖子的整洁是不够的——我们至少也必须在旧帖子上获得消息。至于它的价值,我不认为这是一个坏问题。对于 Stack Overflow 来说,这有点离题。 @Felby 你应该考虑this answer 接受。当 AWS 出现这个问题时,它是大多数开发人员正在寻找的。​​span> 【参考方案1】:

我可以向您推荐替代解决方案和信息。 通常所有证书都是 PEM 文件格式。您只需打开记事本或任何文本编辑器并拖动您收到的 .crt 文件格式的文件。通常称为 .PEM 文件。如果您的 keytool 中加载了证书,您可以从 keytool 将证书导出为 pfx 文件。然后,您可以将 pfx 文件与 pfx 文件中的私钥分开。因为 pfx 文件是您的证书和私钥的组合。所以您可以单独获取私钥文件并在您的 amazon aws 上使用它。

我怀疑可能有另一种安装证书的方法。可能您可以联系证书颁发机构,是否有任何方法可以重新颁发您的证书。

【讨论】:

【参考方案2】:

只是为了记录和其他任何试图弄清楚的人:

你的域名.key -> 终端命令:sudo openssl rsa -in yourdomain.key -outform PEM -out yourdomain.pem -> 私钥

你的域名.crt -> 公钥

gd_bundle.crt -> 证书链

你很高兴 :)

【讨论】:

天啊,我因问题浪费了这么多小时,你刚刚救了我!我购买了 RapidSSL 证书:诀窍是 1)按照您在此处的建议转换私钥,以及 2)反转 RapidSSL 提供的证书链中证书的顺序。谢谢! 一直要求我输入密码,但我的 rapidssl 证书没有密码 sudo 命令将要求输入管理员密码,除非您的帐户通过几种不同的方法设置为不需要密码。这也是你指的密码吗? 为了在需要的人可能找到的地方添加一些东西,我们从客户端获得了 Host Gator 证书,它似乎设置得相当好 - 没有 pem 转换,并且 CA 包已经串联在一起。但是,不会进入亚马逊。捆绑包中证书的顺序也是如此。通过颠倒顺序,它进入并工作了。【参考方案3】:

对我来说,这是一个简单的两步:

    将私钥转换为 PEM:

    openssl rsa -in yourdomain.key -outform PEM

    Convert the certificate and certificate bundle to PEM:

    openssl x509 -inform PEM -in yourdomain.crt

    openssl x509 -inform PEM -in bundle.crt

【讨论】:

这个特别的答案真的帮助了我。谢谢乔纳森。作为记录,yourdomain.crt 是公钥,即您从提供商处获得的证书(也可能是 .cer) 我不断收到错误WARNING: can't open config file: /etc/pki/tls/openssl.cnf @tq - 一些 OpenSSL 命令也采用 -config 选项。使用它来指定您正在使用的配置文件的路径。 @felby 应该将此标记为已接受的答案。这是唯一不会对 ios 设备造成 SSL 信任问题的答案。 这个答案对通配符 SSL 很有帮助。您必须同时转换 domain.crt 和 gd_bundle.crt 文件。【参考方案4】:

一个小问题。我使用的是 Windows 机器(Win 7 Pro),当我使用 OpenSSL 的 windows 端口时,输出的文件具有 Unix 样式的行尾字符(LF)。

我必须将文件转换为 Windows 样式 (CRLF) 才能上传私钥。

【讨论】:

【参考方案5】:

我们找到了解决此问题的替代方法。我们有同样的症状和同样的错误。

然后我们再次尝试重新输入 pem 代码,但这一次我们确保按一次 Enter 并确保光标位于每个窗口末尾的空白行上。然后我们保存了它。 成功了。

这解决了我们的问题,所以它可能会为其他人解决它。

【讨论】:

【参考方案6】:

看起来问题在于我将密钥和证书的内容复制到 AWS 管理控制台的方式。我在 Windows 7 桌面上使用在 Virtual Box 中运行的 Ubuntu 桌面;将 gedit 屏幕中的值复制并粘贴到 Windows 机器上运行的浏览器中。一旦我在与 Web 浏览器(在本例中为 Windows)相同的盒子上打开密钥和证书文件,证书就顺利通过了。我猜在使用 Virtual Box 客户端和主机之间的共享剪贴板时,文件的某些部分没有正确完成。结案。

【讨论】:

你能接受你的回答,让人们知道这已经解决了吗? 奇怪,我以为我早就接受了……

以上是关于使用 Godaddy 颁发的证书时“公钥证书和私钥不匹配”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用OpenSSL工具生成根证书与应用证书

通过ios实现RSA加密和解密

将 GoDaddy 颁发的 .spc 和 .key 文件加入完整的 .pfx / .cer 证书

亚马逊如何在 ACM 中使用域名颁发 SSL 证书

如何从 Godaddy 证书导出私钥并与 Apache SSL 一起使用

car认证中心配置