為 CloudFront 分佈啟用交互 TLS - Amazon CloudFront

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

為 CloudFront 分佈啟用交互 TLS

先決條件和要求

CloudFront 的交互 TLS 驗證模式要求所有用戶端在 TLS 交握期間呈現有效的憑證,並拒絕沒有有效憑證的連線。在 CloudFront 分佈上啟用交互 TLS 之前,請確定您已:

  • 使用憑證授權單位憑證建立信任存放區

  • 將信任存放區與您的 CloudFront 分佈建立關聯

  • 確保所有分佈快取行為都使用僅限 HTTPS 的檢視器通訊協定政策

  • 確保您的分佈使用 HTTP/2 (預設設定,HTTP/3 不支援檢視器 mTLS)

注意

相互 TLS 身分驗證需要檢視器和 CloudFront 之間的 HTTPS 連線。您無法在具有支援 HTTP 連線之任何快取行為的分佈上啟用 mTLS。

啟用交互 TLS (主控台)

對於新分佈

在 CloudFront 主控台中建立新分佈的過程中,無法設定檢視器 mTLS。首先透過任何方式 (主控台、CLI、API) 建立分佈,然後編輯分佈設定,根據下列現有的分佈說明啟用檢視器 mTLS。

對於現有的分佈

  1. 登入 AWS 管理主控台 ,並在 開啟 CloudFront 主控台https://console.aws.amazon.com/cloudfront/v4/home

  2. 從分佈清單中,選取您要修改的分佈。

  3. 確定針對所有快取行為,檢視器通訊協定政策設定為將 HTTP 重新導向至 HTTPS僅限 HTTPS。(您可以選擇快取行為索引標籤,以使用 HTTP 通訊協定政策檢視和更新任何快取行為。)

  4. 選擇一般索引標籤。

  5. Settings (設定) 區段中,選擇 Edit (編輯)。

  6. 連線區段中,尋找檢視器交互身分驗證 (mTLS)

  7. 啟用交互身分驗證切換為開啟。

  8. 對於用戶端憑證驗證模式,選取必要 (所有用戶端都必須提供憑證) 或選用 (用戶端可以選擇性提供憑證)。

  9. 針對信任存放區,選取您先前建立的信任存放區。

  10. (選用) 如果您希望 CloudFront 在 TLS 交握期間將 CA 名稱傳送給用戶端,請切換公告信任存放區 CA 名稱。

  11. (選用) 如果您想要允許憑證過期的連線,請切換忽略憑證過期日期

  12. 選擇儲存變更

啟用交互 TLS (AWS CLI)

對於新分佈

下列範例示範如何建立包含 mTLS 設定的分佈組態檔案 (distribution-config.json):

{ "CallerReference": "cli-example-1", "Origins": { "Quantity": 1, "Items": [ { "Id": "my-origin", "DomainName": "example.com", "CustomOriginConfig": { "HTTPPort": 80, "HTTPSPort": 443, "OriginProtocolPolicy": "https-only" } } ] }, "DefaultCacheBehavior": { "TargetOriginId": "my-origin", "ViewerProtocolPolicy": "https-only", "MinTTL": 0, "ForwardedValues": { "QueryString": false, "Cookies": { "Forward": "none" } } }, "ViewerCertificate": { "CloudFrontDefaultCertificate": true }, "ViewerMtlsConfig": { "Mode": "required", "TrustStoreConfig": { "TrustStoreId": {TRUST_STORE_ID}, "AdvertiseTrustStoreCaNames": true, "IgnoreCertificateExpiry": true } }, "Enabled": true }

使用下列範例命令建立已啟用 mTLS 的分佈:

aws cloudfront create-distribution --distribution-config file://distribution-config.json

對於現有的分佈

使用下列範例命令取得目前的分佈組態:

aws cloudfront get-distribution-config --id E1A2B3C4D5E6F7 --output json > dist-config.json

編輯 檔案以新增 mTLS 設定。將下列範例區段新增至您的分佈組態:

"ViewerMtlsConfig": { "Mode": "required", "TrustStoreConfig": { "TrustStoreId": {TRUST_STORE_ID}, "AdvertiseTrustStoreCaNames": true, "IgnoreCertificateExpiry": true } }

從檔案移除 ETag 欄位,但分別儲存其值。

使用下列範例命令,使用新組態更新分佈:

aws cloudfront update-distribution \ --id E1A2B3C4D5E6F7 \ --if-match YOUR-ETAG-VALUE \ --distribution-config file://dist-config.json

檢視器通訊協定政策

使用交互 TLS 時,所有分佈快取行為都必須使用僅限 HTTPS 的檢視器通訊協定政策進行設定:

  • HTTP 重新導向至 HTTPS - 在執行憑證驗證之前將 HTTP 請求重新導向至 HTTPS。

  • 僅限 HTTPS - 僅接受 HTTPS 請求並執行憑證驗證。

注意

交互 TLS 不支援 HTTP 和 HTTPS 檢視器通訊協定政策,因為 HTTP 連線無法執行憑證驗證。

後續步驟

在 CloudFront 分佈上啟用檢視器 TLS 之後,您可以關聯連線函數來實作自訂憑證驗證邏輯。Connection Functions 可讓您使用自訂驗證規則、憑證撤銷檢查和記錄來擴展內建 mTLS 身分驗證功能。如需建立和關聯連線函數的詳細資訊,請參閱 關聯 CloudFront 連線函數