使用Godaddy颁发的证书时,“公钥证书和私钥不匹配”


86

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

这是我创建密钥的方式:

$ 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)作为服务器类型(我也尝试过“ other”和“ 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格式,但是我不确定如何验证这一点。

有任何想法吗?


1
堆栈溢出是一个有关编程和开发问题的网站。这个问题似乎与主题无关,因为它与编程或开发无关。请在帮助中心中查看我可以询问哪些主题。也许超级用户将是一个更好的询问场所。另请参阅我在哪里发布有关Dev Ops的问题?
jww 2015年

这篇文章已有3年历史了,为什么现在不愿意移动它?
Felby

1
费尔比(Felby)-人们经常说:“ ...但是看到这篇文章和那篇文章”。因此,这不足以保持新帖子的整洁-我们至少也必须获得有关旧帖子的信息。对于它的价值,我不认为这是一个坏问题。对于Stack Overflow来说,它只是有点题外话。
jww 2015年

@Felby,您应考虑接受此答案。当AWS出现此问题时,这是大多数开发人员正在寻找的对象。
Noel Baron

Answers:


61

对我来说,这很容易做到两步:

  1. 将私钥转换为PEM:

    openssl rsa -in yourdomain.key -outform PEM

  2. 将证书和证书捆绑包转换为PEM

    openssl x509 -inform PEM -in yourdomain.crt

    openssl x509 -inform PEM -in bundle.crt


1
这个特别的答案确实帮助了我。谢谢乔纳森。作为记录,yourdomain.crt是公用密钥,即您从提供商那里获得的证书(也可以是.cer)
user_v 2013年

我不断收到错误消息WARNING: can't open config file: /etc/pki/tls/openssl.cnf
2014年

2
@tq-一些OpenSSL命令也有一个-config选项。使用它来指定您正在使用的配置文件的路径。
jww 2015年

@felby应该将此标记为已接受的答案。这是唯一不会在iOS设备上造成SSL信任问题的答案。
Noel Baron

这个答案对于通配符SSL确实很有帮助。您必须同时转换domain.crt和gd_bundle.crt文件。
公爵

40

仅作记录,还有其他试图弄清楚的人:

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

yourdomain.crt->公钥

gd_bundle.crt->证书链

而且你很好:)


2
天哪,我失去了很多小时的问题,你救了我!我购买了RapidSSL证书:诀窍是1)像您在此处建议的那样转换私钥,以及2)颠倒RapidSSL提供的证书链中证书的顺序。谢谢!
MiniQuark 2014年

一直要求我提供密码,但是我的Rapidssl证书是不做的
tq

sudo命令将要求输入管理员密码,除非您的帐户设置为不需要通过几种其他方法输入密码。您输入的密码也是吗?
克里斯J

为了在需要它的人发现它的地方添加一些东西,我们从客户端获得了Host Gator证书,而且看起来设置得很好-没有pem转换,并且CA捆绑包已经连接在一起。但是,不会进入亚马逊。捆绑包中的证书顺序也是一样。通过颠倒顺序,它起作用了。
CargoMeister

23

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


您能否接受您的答案,以便人们知道它已解决?
菲尔·斯特金

2
奇怪,我以为我早就接受了……
Felby

7

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

然后,我们尝试再输入一次pem码,但是这次我们确保按回车一次,并确保光标在每个窗口末尾的空白行上。然后我们保存了它。有效。

这解决了我们的问题,因此可能会为其他人解决。


1

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

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


0

我可以为您提供替代解决方案并为您提供信息。通常,所有证书均为PEM文件格式。您可以只打开一个记事本或任何文本编辑器,然后拖动以.crt文件格式接收的文件。通常称为.PEM文件。如果证书已加载到keytool中,则可以从keytool中将证书导出为pfx文件。然后,您可以将pfx文件与pfx文件的私钥分开。由于pfx文件是证书和私钥的组合,因此您可以单独获取私钥文件并在亚马逊AWS上使用它。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.