本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Certificate Manager 進行 AWS 憑證管理
AWS Certificate Manager (ACM)
憑證授權單位支援
CloudFront 相互 TLS (原始伺服器) 需要具有延伸金鑰使用 (EKU) 的用戶端憑證,才能進行 TLS 用戶端身分驗證。由於此要求,您必須從憑證授權單位發行憑證,並將其匯入 AWS Certificate Manager。ACM 的自動憑證佈建和續約功能不適用於交互 TLS (原始) 用戶端憑證。CloudFront 相互 TLS (原始伺服器) 支援來自兩個來源的用戶端憑證:
-
AWS 私有憑證授權機構:您可以使用延伸金鑰使用欄位中包含 TLS 用戶端身分驗證的憑證範本 (例如 EndEntityClientAuthCertificate 範本),從 AWS 私有 CA 發行憑證。從 AWS Private CA 發行憑證後,您必須將其匯入美國東部 (維吉尼亞北部) 區域 (us-east-1) 的 ACM。此方法提供 AWS Private CA 的安全優勢,同時讓您控制憑證生命週期管理。
-
第三方私有憑證授權機構:您也可以從現有的私有憑證授權機構基礎設施發行憑證,並將其匯入 ACM。這可讓您維護目前的憑證管理程序,同時利用 CloudFront 的交互 TLS (原始) 功能。憑證必須在延伸金鑰使用欄位中包含 TLS 用戶端身分驗證,並且必須是具有憑證、私有金鑰和憑證鏈的 PEM 格式。
重要
對於 AWS 私有 CA 和第三方 CAs,您需負責監控憑證過期日期,並在過期前將續約的憑證匯入 ACM。ACM 的自動續約功能不適用於用於交互 TLS (原始伺服器) 的匯入憑證。
憑證需求和規格
用戶端憑證需求
-
格式:PEM (隱私權增強郵件) 格式
-
元件:憑證、私有金鑰和憑證鏈
-
憑證鏈深度上限:3 (分葉憑證 + 中繼憑證 + 根憑證)
-
憑證鏈大小上限:64 KB
-
憑證大小:不能超過 96 KB
-
私有金鑰大小上限:5 KB (ACM 限制)
-
每個 CloudFront 分佈建立或更新 API 呼叫可新增或修改的唯一原始伺服器 mTLS 憑證 ARNs 上限:5
-
區域:憑證必須存放在美國東部 (維吉尼亞北部) 區域的 ACM 中 (us-east-1)
支援的憑證規格
-
憑證類型:X.509v3
-
公有金鑰演算法:
RSA:2048 位元
ECDSA:P-256
-
簽章演算法:
SHA256, SHA384, SHA512搭配 RSA
SHA256, SHA384, SHA512搭配 ECDSA
SHA256, SHA384, SHA512搭配 RSASSA-PSS 搭配 MGF1
-
擴充金鑰用量 (必要):憑證需要將擴充金鑰用量 (EKU) 擴充功能設定為 TLS 用戶端身分驗證,以確保授權用於 mTLS 目的
伺服器憑證需求
在交互 TLS 交握期間,您的原始伺服器必須呈現來自公開信任憑證授權單位的憑證。如需原始伺服器憑證需求的完整詳細資訊,請參閱搭配 CloudFront 使用 SSL/TLS 憑證的要求。
請求或匯入憑證
在啟用交互 TLS (原始伺服器) 之前,您必須在 ACM 中擁有可用的用戶端憑證。
從 AWS Private CA 請求和匯入憑證
事前準備:
您帳戶中設定的 AWS 私有憑證授權機構
從 AWS Private CA 發行憑證的許可
將憑證匯入 ACM 的許可
適合您使用案例
Extended key usage:TLS web client authentication的憑證範本 ARN安裝 OpenSSL、 AWS CLI 和 jq (用於剖析 JSON)。
從 PCA 請求憑證並匯入 ACM (AWS CLI)
-
在變數中設定您的私有 CA ARN,以便於重複使用。
PCA_ARN="arn:aws:acm-pca:region:account:certificate-authority/12345678..." -
使用 OpenSSL 產生 ECDSA P-256 私有金鑰 (prime256v1 曲線) 和憑證簽署請求 (CSR),確保使用 節點旗標來保持私有金鑰在 ACM 匯入所需的非加密狀態。
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -nodes \ -keyout private.key \ -out request.csr \ -subj "/CN=client.example.com" -
將 CSR 提交至您的 AWS 私有 CA 以發行憑證,這會傳回新發行憑證的 ARN。
CERT_ARN=$(aws acm-pca issue-certificate \ --certificate-authority-arn "$PCA_ARN" \ --csr fileb://request.csr \ --signing-algorithm "SHA256WITHECDSA" \ --validity Value=365,Type="DAYS" \ --template-arn arn:aws:acm-pca:::template/EndEntityCertificate/V1 \ --query 'CertificateArn' --output text) -
使用 get-certificate 命令從 AWS PCA 擷取憑證套件,這會傳回分葉憑證和鏈結,然後使用 jq 將其分隔成不同的檔案。
# Retrieve the full certificate bundle in JSON format aws acm-pca get-certificate \ --certificate-authority-arn "$PCA_ARN" \ --certificate-arn "$CERT_ARN" \ --output json > full_cert.json # Split into Leaf and Chain jq -r '.Certificate' full_cert.json > leaf_cert.pem jq -r '.CertificateChain' full_cert.json > cert_chain.pem -
使用 fileb:// 通訊協定將未加密的私有金鑰、分葉憑證和憑證鏈匯入 AWS ACM,以正確處理 CLI 中的二進位檔案資料。
aws acm import-certificate \ --certificate fileb://leaf_cert.pem \ --private-key fileb://private.key \ --certificate-chain fileb://cert_chain.pem \ --region us-east-1 \ --query 'CertificateArn' \ --output text
從第三方 CA 匯入憑證
事前準備:
來自您憑證授權單位的 PEM 格式憑證、未加密私有金鑰和憑證鏈
憑證必須包含 TLS 用戶端身分驗證的延伸金鑰使用量
將憑證匯入 ACM 的許可
將憑證匯入 ACM (AWS CLI)
aws acm import-certificate \ --certificate fileb://certificate.pem \ --private-key fileb://private-key.pem \ --certificate-chain fileb://certificate-chain.pem \ --region us-east-1 \ --query 'CertificateArn' \ --output text
後續步驟
在 ACM 中取得或匯入用戶端憑證後,您可以將原始伺服器設定為需要交互 TLS 身分驗證,並在 CloudFront 分佈上啟用交互 TLS (原始)。如需在 CloudFront 中啟用交互 TLS (原始) 的說明,請參閱下一節「為 CloudFront 分佈啟用交互 TLS (原始)」。