我从 godaddy 购买了 SSL 证书。我创建了一个密钥库文件,从中生成了一个 csr 文件,将其发送给 godaddy,并收到了这些文件:
- 我的域名.crt
- gd_intermediate.crt
- gd_bundle.crt
现在我正在尝试在 AWS 控制台中创建一个弹性负载均衡器。当被要求提供证书详细信息时,他们要求:
- 私钥(pem 编码)
- 公钥证书(pem 编码)
- 证书链(pem 编码,可选)
如何将我拥有的文件转换为这些参数?
我从 godaddy 购买了 SSL 证书。我创建了一个密钥库文件,从中生成了一个 csr 文件,将其发送给 godaddy,并收到了这些文件:
现在我正在尝试在 AWS 控制台中创建一个弹性负载均衡器。当被要求提供证书详细信息时,他们要求:
如何将我拥有的文件转换为这些参数?
对于 AWS ELB,您需要三件事
私钥
您在 linux 上生成的 rsa 密钥
#openssl genrsa -des3 -out host.key 2048
它会要求输入密码,现在给它,我们稍后会删除它。
公钥
首先从您的私钥生成 csr 文件,该文件是证书签名请求(在您的情况下,您提交给权威机构 Godaddy 以获取公钥的文件)。您可以使用生成 csr 文件
#openssl req -new -key host.key -out host.csr
现在您将您的 csr 文件提交给 godaddy,作为回报,他们会为您提供两个文件(mydomain.crt、gd_bundle.crt)。mydomain.crt 是您的公钥。
证书链
gd_bundle.crt 是 Godaddy 为您提供公钥的认证链文件。您的公钥和认证链文件不需要任何转换,但对于私钥文件,您需要删除其密码并将其转换为 pem
#openssl rsa -in host.key -out private.pem
并且将 AWS.put private key.pem 文件内容放在 aws 私钥部分并将 mydomain.crt 文件内容放在公钥中并将 gd_bundle.crt 内容放在证书链部分中,这一切都很好。转换完全取决于您从哪里获得证书。如果从其他公司获得证书,我会建议您遵循 AWS Docs。
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ssl-server-cert.html
我最近不得不经历这个过程,但没有一个答案对我有用。以下是允许我将新 SSL 证书上传到 AWS 的步骤(以供后续在 ElasticBeanstalk 中使用)。
获取私钥
我必须为此过程使用两个命令:
openssl genrsa -des3 -out server.pass.key 2048
openssl rsa -in server.pass.key -out server.key
该server.key
文件是您的私钥。
此外,您可以通过执行以下操作生成 CSR(证书签名请求):
openssl req -nodes -new -key server.key -out server.csr
这是我们将用于请求 GoDaddy 颁发我们的新证书的文件。
获取公钥
在 GoDaddy 中颁发证书后,下载它。这将为您提供两个必须通过以下方式捆绑为一个的文件:
cat yourdomain.crt gd_bundle-g2-g1.crt > combined.crt
这combined.crt
将是您的公钥。
将服务器证书上传到 AWS
通过server.key
andcombined.crt
文件,您现在可以使用AWS CLI将证书上传到 AWS 。您只需要使用以下命令:
aws iam upload-server-certificate --server-certificate-name your_certificate_name --certificate-body file://combined.crt --private-key file://server.key
如果一切顺利,您将收到来自服务器的响应:
{
"ServerCertificateMetadata": {
"ServerCertificateId": "ABCDEFG12345678",
"ServerCertificateName": "certificate-name",
"Expiration": "2018-08-26T11:59:38Z",
"Path": "/",
"Arn": "arn:aws:iam::1234123412:server-certificate/certificate-name",
"UploadDate": "2017-08-26T19:53:46.989Z"
}
}
就是这样,您应该在 AWS 中有一个可用的新 SSL 证书。
差不多两年前,但我偶然发现了这一点,它让我难过一秒钟。
Certificate body*是 zip 文件中的主键,我的看起来像这样,f7dsdfsdf2f4e942d.crt
只有一个条目。
中间字段Certificate private key*是签署您的 csr 的 ssh 私钥。它存在于您用来创建 csr 请求的服务器上。我通过查看 nginx 配置文件并复制到我的本地驱动器找到了我的位置。
最后一个字段证书链是具有 3 个条目的文件,我的看起来像gd_bundle-g2-g1.crt
.
这是有关如何在 Amazon Elastic Load Balancer (ELB) 上获得 Godaddy ssl 证书的指南http://cloudarch.co.uk/2011/10/elastic-load-balancer-ssl-setup-guide-pem-encoded -csr/#.UKFla2nGU_8
您想将 mydomain.crt 转换为 mydomain.pem(另外两个文件是信任链文件)。您可以在任何 unix 或 linux 系统上使用 openssl 从 crt 生成 pem 文件。
由于证书颁发者拥有私钥,它应该要求您提供私钥的唯一原因是它是否正在尝试生成证书。如果您已经拥有证书,则应该使用它。检查文档
如果您使用的是 Windows IIS 服务器:
私钥
-----BEGIN PRIVATE KEY-----
到的部分-----END PRIVATE KEY-----
。
-----BEGIN PRIVATE KEY-----
,也不是下面的行-----END PRIVATE KEY-----
公钥
证书链