建立和簽署 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 (Enter) 鍵。下表說明和顯示了每個欄位的範例:

名稱 描述 範例
Country Name (國家/地區名稱) 兩個字母的 ISO 縮寫,用來代表您的國家/地區。 US = 美國
State or Province (州或省) 您組織位在的州名或省名。此名稱不得縮寫。 華盛頓州
Locality Name (地區名稱) 您組織所在城市的名稱。 西雅圖
Organization Name (組織名稱) 您組織的完整法定名稱。請不要使用您組織名稱的縮寫。 範例公司
Organizational Unit (組織單位) 選填,這是額外的組織資訊。 行銷部門
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

保留私有金鑰和公有憑證以供日後使用。您可以放棄簽署請求。一律將私密金鑰儲存於安全的位置,並且避免將該金鑰加入您的原始程式碼中。

若要在 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