

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立和簽署 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 並使用 AWS Certificate Manager (ACM) 免費搭配負載平衡環境使用。如需相關說明，請參閱 *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](eb-cli3.md) 的 **eb 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 (Enter)** 鍵。下表說明和顯示了每個欄位的範例：


****  

| 名稱 | 描述 | 範例 | 
| --- | --- | --- | 
| Country Name (國家/地區名稱) | 兩個字母的 ISO 縮寫，用來代表您的國家/地區。 | US = 美國 | 
| State or Province (州或省) | 您組織位在的州名或省名。此名稱不得縮寫。 | 華盛頓州 | 
| Locality Name (地區名稱) | 您組織所在城市的名稱。 | 西雅圖 | 
| Organization Name (組織名稱) | 您組織的完整法定名稱。請不要使用您組織名稱的縮寫。 | 範例公司 | 
| 組織單位 | 選填，這是額外的組織資訊。 | Marketing | 
| Common Name (通用名稱) | 您網站的完整網域名稱。此名稱必須符合使用者造訪您網站時所看到的網域名稱，否則將會顯示憑證錯誤。 | 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
```

保留私有金鑰和公有憑證以供日後使用。您可以放棄簽署請求。一律[將私密金鑰儲存於安全的位置](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)。