创建和签名 X509 证书 - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建和签名 X509 证书

您可以使用 OpenSSL 为应用程序创建 X509 证书。OpenSSL 一种支持广泛加密功能的标准开源库,其功能包括创建和签名 X509 证书。有关 OpenSSL 的更多信息,请访问 www.openssl.org/

注意

如果要在单实例环境中使用 HTTPS 或使用自签名证书在后端上重新加密,您只需在本地创建证书。如果您拥有域名,则可以在 Amazon 中创建证书并通过 Amazon Certificate Manager (ACM) 免费将证书用于负载均衡的环境。有关说明,请参阅 Amazon Certificate Manager 用户指南中的请求证书

在命令行运行 openssl version,查看是否已安装 OpenSSL。如果尚未安装,您可使用公有 GitHub 存储库的说明或使用您喜欢的程序包管理器,构建并安装源代码。OpenSSL 也安装在 Elastic Beanstalk 的 Linux 镜像上,因此另一个快捷的替代方案是使用 EB CLIeb ssh 命令,在正在运行的环境中连接至 EC2 实例:

~/eb$ eb ssh [ec2-user@ip-255-55-55-255 ~]$ openssl version OpenSSL 1.0.1k-fips 8 Jan 2015

您需要创建 RSA 私有密钥才能创建证书签名请求 (CSR)。要创建私有密钥,请使用 openssl genrsa 命令:

[ec2-user@ip-255-55-55-255 ~]$ openssl genrsa 2048 > privatekey.pem Generating RSA private key, 2048 bit long modulus .................................................................................................................................+++ ...............+++ e is 65537 (0x10001)
privatekey.pem

要用于保存私有密钥的文件的名称。通常,openssl genrsa 命令将私有密钥内容输出到屏幕,但此命令将输出通过管道传送到文件。选择任何文件名,并将文件存储在安全位置,以便您以后可以检索它。如果您丢失私有密钥,则无法使用您的证书。

CSR 是指您为申请数字服务器证书而发送至证书颁发机构 (CA) 的文件。要创建 CSR,请使用 openssl req 命令:

$ openssl req -new -key privatekey.pem -out csr.pem You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank.

输入所请求的信息并按 Enter。下表描述并显示每个字段的示例。

名称 描述 示例
国家/地区名称 代表国家/地区的两个字母 ISO 缩写。 US = 美国
州或省 组织所在州或省的名称。不能缩写此名称。 Washington
所在地名称 组织所在城市的名称。 Seattle
组织名称 组织的法定全称。请勿缩写组织名称。 Example Corporation
组织部门 可选,用于提供额外的组织信息。 市场营销
公用名 网站的完全限定域名。这必须与用户访问站点时看到的域名相符,否则将显示证书错误。 www.example.com
电子邮件地址 站点管理员的电子邮件地址。 someone@example.com

您可向第三方提交签名请求以供签名,或自行签名以供开发和测试。自签名证书也在负载均衡器和 EC2 实例之间用于后端 HTTPS。

要对证书进行签名,请使用 openssl x509 命令。以下示例使用来自上一步骤 (privatekey.pem) 和签名请求 (csr.pem) 的私有密钥来创建名为 public.crt 的公有证书,该证书的有效期为 365 天。

$ openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out public.crt Signature ok subject=/C=us/ST=washington/L=seattle/O=example corporation/OU=marketing/CN=www.example.com/emailAddress=someone@example.com Getting Private key

保存私钥和公有证书以待将来使用。您可放弃签名请求。请始终将私有密钥存储在安全位置并避免将其添加到源代码。

要将证书用于 Windows Server 平台,您必须将证书转换为 PFX 格式。使用以下命令可在私有密钥和公有证书文件中创建 PFX 证书:

$ openssl pkcs12 -export -out example.com.pfx -inkey privatekey.pem -in public.crt Enter Export Password: password Verifying - Enter Export Password: password

既然您已经拥有了证书,您可以将其上传到 IAM以与负载均衡器结合使用,或者在您的环境中配置实例以终止 HTTPS