本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
其他驗證模式
CloudFront 交互 TLS 的預設值為必要模式 — CloudFront 會驗證每個用戶端憑證,並拒絕失敗的連線。不過,若要支援其他使用案例,例如提供混合 mTLS 驗證和未驗證用戶端的應用程式,或是原始伺服器執行自己的 mTLS 驗證的環境,CloudFront 支援兩種額外的模式。
選用模式專為混合用戶端人口的應用程式而設計。例如,入口網站為未經驗證的瀏覽器提供公開內容,同時將 API 端點限制為提供有效憑證的用戶端。或者,您逐漸將用戶端加入 mTLS,且需要在轉換期間允許已驗證和未驗證連線的遷移案例。
傳遞模式是專為原始伺服器已執行 mTLS 驗證的客戶所設計。例如,從現場部署反向代理遷移的服務、其他 CDNs 或已處理憑證驗證的 Application Load Balancer。傳遞模式可讓這些客戶將 CloudFront 放置在其應用程式前面,而無需在邊緣重新實作驗證邏輯。
選用模式
用戶端憑證驗證選用模式
CloudFront 提供替代的選用用戶端憑證驗證模式,可驗證呈現的用戶端憑證,但允許存取不存在憑證的用戶端。
選用模式行為
-
授予具有有效憑證的用戶端連線 (拒絕無效的憑證)。
-
允許在沒有憑證的情況下連線至用戶端。
-
允許透過單一分佈的混合用戶端身分驗證案例。
選用模式非常適合逐步遷移至 mTLS 身分驗證、支援具有憑證的用戶端和沒有憑證的用戶端,或與舊版用戶端保持回溯相容性。
注意
在選用模式中,即使用戶端不存在憑證,連線函數仍會被叫用。這可讓您實作自訂邏輯,例如記錄用戶端 IP 地址,或根據是否顯示憑證套用不同的政策。
設定選用模式 (主控台)
-
在您的分佈設定中,導覽至一般索引標籤,選擇編輯。
-
捲動至連線容器中的檢視器交互身分驗證 (mTLS) 區段。
-
針對用戶端憑證驗證模式,選取選用。
-
儲存變更。
設定選用模式 (AWS CLI)
下列範例示範如何設定選用模式:
"ViewerMtlsConfig": { "Mode": "optional", ...other settings }
自訂憑證標頭
在檢視器請求 CloudFront Functions 中使用 mTLS 協助程式函數,在憑證標頭到達原始伺服器之前重新命名、重新格式化或合併憑證標頭。從使用不同標頭名稱或憑證編碼格式的其他服務遷移時,這很有用。
傳遞模式
傳遞模式可讓在其原始伺服器具有現有 mTLS 實作的客戶使用 CloudFront。CloudFront 會終止 TLS 連線,並將用戶端憑證轉送至原始伺服器做為 HTTP 標頭。您的原始伺服器會執行所有憑證驗證,包括鏈結驗證、撤銷檢查和自訂政策強制執行。
傳遞模式的運作方式
-
用戶端會連線至 CloudFront,並在 TLS 交握期間提供用戶端憑證。
-
CloudFront 會完成 TLS 交握,而不對信任存放區驗證憑證。
-
CloudFront 會將用戶端憑證和憑證鏈新增為請求上的 HTTP 標頭。
-
請求會轉送到您的原始伺服器。不會快取任何內容。
-
您的原始伺服器會驗證憑證並處理請求。
用戶端也可以連線而不出示憑證。您的原始伺服器或連線函數會處理空白憑證案例。
注意
在傳遞模式中,即使用戶端沒有憑證,連線函數仍會被叫用。這可讓您實作自訂邏輯,例如記錄用戶端 IP 地址,或根據是否顯示憑證套用不同的政策。
組態需求
-
無信任存放區 — 分佈必須具有零信任存放區關聯。
-
快取已停用 — 所有快取行為都必須使用 受管
CachingDisabled快取政策。 -
禁止 Origin Shield — 無法啟用 Origin Shield。
-
禁止 Lambda@Edge — 不允許 Lambda@Edge 函數關聯。
-
需要原始伺服器請求政策 — 您必須允許列出原始伺服器請求政策中的
Client-Cert和Client-Cert-Chain標頭,原始伺服器才能接收它們。 -
Certificate-chain-depth — CloudFront 允許用戶端憑證鏈的深度上限為 4,以便轉送至原始伺服器。
啟用傳遞模式
主控台
-
更新所有快取行為以使用受管
CachingDisabled快取政策。 -
開啟 CloudFront 主控台並選擇您的分佈。
-
選擇一般索引標籤,然後選擇設定下的編輯。
-
在檢視器交互身分驗證 (mTLS) 下,選取傳遞。
-
選擇儲存變更。
AWS CLI
確保所有快取行為都參考 受管CachingDisabled政策,然後更新分佈組態:
{ "ViewerMtlsConfig": { "Mode": "passthrough" } }
轉送至原始伺服器的標頭
CloudFront 會將下列標頭新增至傳送至原始伺服器的請求:
-
Client-Cert— 用戶端提供的終端實體 (分葉) 憑證,以 base64 編碼。 -
Client-Cert-Chain— 憑證鏈 (不含分葉),做為結構化欄位清單。每個憑證都是 base64 編碼。Client-Cert-Chain是清單類型標頭。它可能會在請求中出現多次。串連所有值會保留原始鏈結順序。當用戶端僅提供單一憑證時,Client-Cert-Chain會省略 。
CloudFront 會在新增實際憑證資料之前,從用戶端請求捨棄任何傳入的 Client-Cert或 Client-Cert-Chain標頭。這可防止標頭詐騙。
自訂憑證標頭
在檢視器請求 CloudFront Functions 中使用 mTLS 協助程式函數,在憑證標頭到達原始伺服器之前重新命名、重新格式化或合併憑證標頭。從使用不同標頭名稱或憑證編碼格式的其他服務遷移時,這很有用。