创建和签名 X509 证书 - AWS Elastic Beanstalk

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

创建和签名 X509 证书

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

注意

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