本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 IAM 中管理伺服器憑證
若要啟用 HTTPS 連線,來連線到您的網站或 AWS 上的應用程式,您需要 SSL/TLS 伺服器憑證。處理 AWS Certificate Manager (ACM) 可支援區域中的憑證時,我們建議您使用 ACM 來佈建、管理和部署您的伺服器憑證。在不支援的區域中,您必須使用 IAM 作為憑證管理員。如需了解 ACM 支援哪些區域,請參閱 AWS 一般參考 中的 AWS Certificate Manager 端點和配額。
重要
ACM 為佈建、管理和部署您伺服器憑證的首選工具。使用 ACM,您可以請求憑證或將現有 ACM 或外部憑證部署到 AWS 資源。ACM 提供的憑證為免費且會自動續約。在支援的區域中,您可以使用 ACM 從主控台或以程式設計方式管理伺服器憑證。如需有關 ACM 的詳細資訊,請參閱 AWS Certificate Manager 使用者指南。如需有關請求 ACM 憑證的詳細資訊,請參閱 AWS Certificate Manager 使用者指南中的請求公有憑證或請求私有憑證。如需有關將第三方憑證匯入 ACM 的詳細資訊,請參閱《AWS Certificate Manager 使用者指南》中的匯入憑證。
只有當您必須在 ACM 不支援的區域中支援 HTTPS 連接時,才應使用 IAM 作為憑證管理器。IAM 會安全地加密您的私有金鑰並將加密的版本儲存在 IAM SSL 憑證存放區中。IAM 支援在所有區域部署伺服器憑證,但您必須從將用於 AWS 的外部提供者獲取憑證。不能將 ACM 憑證上傳到 IAM。此外,也無法從 IAM 主控台管理憑證,
如需有關如何將第三方憑證上傳到 IAM 的詳細資訊,請參閱下列主題。
上傳伺服器憑證 (AWS API)
若要將伺服器憑證上傳至 IAM,您必須提供憑證及相符的私有金鑰。當憑證並非自我簽署憑證時,您還必須提供憑證鏈。(上傳自簽署憑證時無需憑證連結。) 在上傳憑證前,請確保您已具有所有這些項目且滿足以下條件:
-
憑證在上傳時必須有效。您不能在憑證有效期開始 (憑證的
NotBefore
日期) 之前或憑證有效期到期 (憑證的NotAfter
日期) 之後上傳憑證。 -
私有金鑰必須為未加密。您無法上傳受密碼或複雜密碼保護的私有金鑰。有關解密已加密的私有金鑰的說明資訊,請參閱 對伺服器憑證進行疑難排解。
-
憑證、私有金鑰和憑證鏈全都必須採用 PEM 編碼。有關將這些項目轉換為 PEM 格式的說明資訊,請參閱 對伺服器憑證進行疑難排解。
若要使用 IAM API 上傳憑證,請傳送 UploadServerCertificate 請求。以下範例顯示如何使用 AWS Command Line Interface (AWS CLI)
-
PEM 編碼的憑證存放在名為
Certificate.pem
的檔案中。 -
PEM 編碼的憑證鏈存放在名為
CertificateChain.pem
的檔案中。 -
PEM 編碼的未加密私有金鑰存放在名為
PrivateKey.pem
的檔案中。 -
(選用) 您要使用鍵值組來標記伺服器憑證。例如,您可以新增標籤金鑰
Department
和標籤值Engineering
,以協助您識別和整理憑證。
若要使用下列範例命令,請將這些檔案名稱取代為您自己的檔案名稱。使用您上傳憑證的名稱取代 ExampleCertificate
。如果您要標記憑證,請將 ExampleKey
和 ExampleValue
標籤鍵值組取代為您自己的值。在連續的一行中輸入命令。為方便閱讀,以下範例包含分行符號和多餘的空格。
aws iam upload-server-certificate --server-certificate-name
ExampleCertificate
--certificate-body file://Certificate.pem
--certificate-chain file://CertificateChain.pem
--private-key file://PrivateKey.pem
--tags '{"Key": "ExampleKey
", "Value": "ExampleValue
"}'
如果上述命令執行成功,則它將傳回上傳憑證的相關中繼資料,包括其 Amazon Resource Name (ARN)、易記名稱、識別符 (ID)、過期日期、標籤等。
注意
如果您要上傳用於 Amazon CloudFront 的伺服器憑證,則必須使用 --path
選項指定路徑。路徑必須以 /cloudfront
開頭,且必須包含結尾反斜線 (例如,/cloudfront/test/
)。
若要使用 AWS Tools for Windows PowerShell 來上傳證書,請使用 Publish-IAMServerCertificate。
用於伺服器憑證的 AWS API 操作
使用下列命令來檢視、標記、重新命名及刪除伺服器憑證。
-
使用 GetServerCertificate 來擷取憑證。此請求將傳回憑證、憑證鏈 (如果已上傳一個) 和有關憑證的中繼資料。
注意
在您上傳後,無法從 IAM 下載或擷取私有金鑰。
-
使用 Get-IAMServerCertificate 來擷取憑證。
-
使用 ListServerCertificates 來列出您已上傳的伺服器憑證。請求會傳回包含有關每個憑證的中繼資料的清單。
-
使用 Get-IAMServerCertificates 來列出您已上傳的伺服器憑證。
-
使用 TagServerCertificate 來標記現有的伺服器憑證。
-
使用 UntagServerCertificate 來取消標記伺服器憑證。
-
使用 UpdateServerCertificate 來重新命名伺服器憑證或更新其路徑。
以下範例顯示如何使用 AWS CLI 執行此作業。
若要使用以下範例指令,請將取代舊與新的憑證名稱與憑證路徑,並在連續的一行中輸入命令。為方便閱讀,以下範例包含分行符號和多餘的空格。
aws iam update-server-certificate --server-certificate-name
ExampleCertificate
--new-server-certificate-nameCloudFrontCertificate
--new-path/cloudfront/
若要使用 AWS Tools for Windows PowerShell 來重新命名伺服器憑證或更新其路徑,請使用 Update-IAMServerCertificate。
-
使用 DeleteServerCertificate 來刪除伺服器憑證。
若要使用 AWS Tools for Windows PowerShell 來刪除伺服器憑證,請使用 Remove-IAMServerCertificate。
對伺服器憑證進行疑難排解
您必須先確保憑證、私有金鑰和憑證連結均使用 PEM 編碼,然後才能將憑證上傳到 IAM。您還必須確保私有金鑰為未加密。請參閱以下範例。
範例 PEM 編碼憑證範例
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
範例 PEM 編碼的未加密私有金鑰範例
-----BEGIN RSA PRIVATE KEY-----
Base64-encoded private key
-----END RSA PRIVATE KEY-----
範例 PEM 編碼的憑證鏈範例
憑證鏈包含一或多個憑證。您可以使用文字編輯器、Windows 的 copy 命令,或 Linux cat 命令,將憑證檔案串連為憑證鏈。當您包含多個憑證時,每個憑證必須認證先前的憑證。您可以透過串連憑證 (包含上一個根 CA 憑證) 來完成此動作。
以下範例包含三個憑證,但您的憑證鏈可包含更多或更少憑證。
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE----- -----BEGIN CERTIFICATE-----Base64-encoded certificate
-----END CERTIFICATE----- -----BEGIN CERTIFICATE-----Base64-encoded certificate
-----END CERTIFICATE-----
如果這些項目在上傳到 IAM 時未採用正確的格式,您可以使用 OpenSSL
- 將憑證或憑證鍊從 DER 轉換為 PEM
-
使用 OpenSSL x509 命令
,如下列範例。在以下範例命令中,將
替換為包含您的 DER 編碼的憑證檔案的名稱。以偏好的輸出檔案名稱取代Certificate.der
,以包含 PEM 編碼的憑證。Certificate.pem
openssl x509 -inform DER -in
Certificate.der
-outform PEM -outCertificate.pem
- 若要將私有金鑰從 DER 轉換為 PEM
-
使用 OpenSSL rsa 命令
,如下列範例。在以下範例命令中,將
替換為包含您的 DER 編碼的私有金鑰檔案的名稱。以偏好的輸出檔案名稱取代PrivateKey.der
,以包含 PEM 編碼的私有金鑰。PrivateKey.pem
openssl rsa -inform DER -in
PrivateKey.der
-outform PEM -outPrivateKey.pem
- 解密已加密的私有金鑰 (移除密碼或密碼短語)
-
使用 OpenSSL rsa 命令
,如下列範例。若要使用以下範例命令,將
替換為包含您的已加密私有金鑰檔案的名稱。以偏好的輸出檔案名稱取代EncryptedPrivateKey.pem
,以包含 PEM 編碼的未加密私有金鑰。PrivateKey.pem
openssl rsa -in
EncryptedPrivateKey.pem
-outPrivateKey.pem
- 將憑證 bundle 從 PKCS#12 (PFX) 轉換為 PEM
-
使用 OpenSSL pkcs12 命令
,如下列範例。在以下範例命令中,將
替換為包含您的 PKCS#12 編碼的憑證 bundle 的名稱。以偏好的輸出檔案名稱取代CertificateBundle.p12
,以包含 PEM 編碼的憑證 bundle。CertificateBundle.pem
openssl pkcs12 -in
CertificateBundle.p12
-outCertificateBundle.pem
-nodes - 將憑證 bundle 從 PKCS#7 轉換為 PEM
-
使用 OpenSSL pkcs7 命令
,如下列範例。在以下範例命令中,將
替換為包含您的 PKCS#7 編碼的憑證 bundle 的名稱。以偏好的輸出檔案名稱取代CertificateBundle.p7b
,以包含 PEM 編碼的憑證 bundle。CertificateBundle.pem
openssl pkcs7 -in
CertificateBundle.p7b
-print_certs -outCertificateBundle.pem