

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

# 创建和签名 X509 证书
<a name="configuring-https-ssl"></a>

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

**注意**  
如果要[在单实例环境中使用 HTTPS](https-singleinstance.md) 或使用自签名证书[在后端上重新加密](configuring-https-endtoend.md)，您只需在本地创建证书。如果您拥有域名，则可以使用 AWS Certificate Manager (ACM) 在中创建证书 AWS 并免费将其用于负载平衡的环境。有关说明，请参阅 *AWS Certificate Manager 用户指南*中的[请求证书](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)。

在命令行运行 `openssl version`，查看是否已安装 OpenSSL。如果你不这样做，你可以按照[公共 GitHub 存储库](https://github.com/openssl/openssl)中的说明来构建和安装源代码，或者使用你最喜欢的包管理器。[OpenSSL 也安装在 Elastic Beanstalk 的 Linux 映像上，因此一种快速的替代方法是使用 EB CLI 的命令连接到运行环境中的 EC2 实例：](eb-cli3.md)**eb ssh**

```
~/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**。下表描述并显示每个字段的示例。


****  

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

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

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

```
$ 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
```

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

要将证书用于 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](configuring-https-ssl-upload.md)以与负载均衡器结合使用，或者[在您的环境中配置实例以终止 HTTPS](https-singleinstance.md)。