本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為 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。
對於現有的分佈
登入 AWS 管理主控台 ,並在 開啟 CloudFront 主控台https://console.aws.amazon.com/cloudfront/v4/home
。 -
從分佈清單中,選取您要修改的分佈。
-
確定針對所有快取行為,檢視器通訊協定政策設定為將 HTTP 重新導向至 HTTPS 或僅限 HTTPS。(您可以選擇快取行為索引標籤,以使用 HTTP 通訊協定政策檢視和更新任何快取行為。)
-
選擇一般索引標籤。
-
在 Settings (設定) 區段中,選擇 Edit (編輯)。
-
在連線區段中,尋找檢視器交互身分驗證 (mTLS)。
-
將啟用交互身分驗證切換為開啟。
-
對於用戶端憑證驗證模式,選取必要 (所有用戶端都必須提供憑證) 或選用 (用戶端可以選擇性提供憑證)。
-
針對信任存放區,選取您先前建立的信任存放區。
-
(選用) 如果您希望 CloudFront 在 TLS 交握期間將 CA 名稱傳送給用戶端,請切換公告信任存放區 CA 名稱。
-
(選用) 如果您想要允許憑證過期的連線,請切換忽略憑證過期日期。
-
選擇儲存變更。
啟用交互 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 連線函數。