使用 Certificate Manager 進行 AWS 憑證管理 - Amazon CloudFront

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

使用 Certificate Manager 進行 AWS 憑證管理

AWS Certificate Manager (ACM) 會存放 CloudFront 在交互 TLS (原始) 身分驗證期間提供給原始伺服器的用戶端憑證。

憑證授權單位支援

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)
  1. 在變數中設定您的私有 CA ARN,以便於重複使用。

    PCA_ARN="arn:aws:acm-pca:region:account:certificate-authority/12345678..."
  2. 使用 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"
  3. 將 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)
  4. 使用 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
  5. 使用 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 (原始)」。