View a markdown version of this page

其他驗證模式 - Amazon CloudFront

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

其他驗證模式

CloudFront 交互 TLS 的預設值為必要模式 — CloudFront 會驗證每個用戶端憑證,並拒絕失敗的連線。不過,若要支援其他使用案例,例如提供混合 mTLS 驗證和未驗證用戶端的應用程式,或是原始伺服器執行自己的 mTLS 驗證的環境,CloudFront 支援兩種額外的模式。

選用模式專為混合用戶端人口的應用程式而設計。例如,入口網站為未經驗證的瀏覽器提供公開內容,同時將 API 端點限制為提供有效憑證的用戶端。或者,您逐漸將用戶端加入 mTLS,且需要在轉換期間允許已驗證和未驗證連線的遷移案例。

傳遞模式是專為原始伺服器已執行 mTLS 驗證的客戶所設計。例如,從現場部署反向代理遷移的服務、其他 CDNs 或已處理憑證驗證的 Application Load Balancer。傳遞模式可讓這些客戶將 CloudFront 放置在其應用程式前面,而無需在邊緣重新實作驗證邏輯。

選用模式

用戶端憑證驗證選用模式

CloudFront 提供替代的選用用戶端憑證驗證模式,可驗證呈現的用戶端憑證,但允許存取不存在憑證的用戶端。

選用模式行為

  • 授予具有有效憑證的用戶端連線 (拒絕無效的憑證)。

  • 允許在沒有憑證的情況下連線至用戶端。

  • 允許透過單一分佈的混合用戶端身分驗證案例。

選用模式非常適合逐步遷移至 mTLS 身分驗證、支援具有憑證的用戶端和沒有憑證的用戶端,或與舊版用戶端保持回溯相容性。

注意

在選用模式中,即使用戶端不存在憑證,連線函數仍會被叫用。這可讓您實作自訂邏輯,例如記錄用戶端 IP 地址,或根據是否顯示憑證套用不同的政策。

設定選用模式 (主控台)

  1. 在您的分佈設定中,導覽至一般索引標籤,選擇編輯

  2. 捲動至連線容器中的檢視器交互身分驗證 (mTLS) 區段。

  3. 針對用戶端憑證驗證模式,選取選用

  4. 儲存變更。

設定選用模式 (AWS CLI)

下列範例示範如何設定選用模式:

"ViewerMtlsConfig": { "Mode": "optional", ...other settings }

自訂憑證標頭

在檢視器請求 CloudFront Functions 中使用 mTLS 協助程式函數,在憑證標頭到達原始伺服器之前重新命名、重新格式化或合併憑證標頭。從使用不同標頭名稱或憑證編碼格式的其他服務遷移時,這很有用。

傳遞模式

傳遞模式可讓在其原始伺服器具有現有 mTLS 實作的客戶使用 CloudFront。CloudFront 會終止 TLS 連線,並將用戶端憑證轉送至原始伺服器做為 HTTP 標頭。您的原始伺服器會執行所有憑證驗證,包括鏈結驗證、撤銷檢查和自訂政策強制執行。

傳遞模式的運作方式

  1. 用戶端會連線至 CloudFront,並在 TLS 交握期間提供用戶端憑證。

  2. CloudFront 會完成 TLS 交握,而不對信任存放區驗證憑證。

  3. CloudFront 會將用戶端憑證和憑證鏈新增為請求上的 HTTP 標頭。

  4. 請求會轉送到您的原始伺服器。不會快取任何內容。

  5. 您的原始伺服器會驗證憑證並處理請求。

用戶端也可以連線而不出示憑證。您的原始伺服器或連線函數會處理空白憑證案例。

注意

在傳遞模式中,即使用戶端沒有憑證,連線函數仍會被叫用。這可讓您實作自訂邏輯,例如記錄用戶端 IP 地址,或根據是否顯示憑證套用不同的政策。

組態需求

  • 無信任存放區 — 分佈必須具有零信任存放區關聯。

  • 快取已停用 — 所有快取行為都必須使用 受管CachingDisabled快取政策。

  • 禁止 Origin Shield — 無法啟用 Origin Shield。

  • 禁止 Lambda@Edge — 不允許 Lambda@Edge 函數關聯。

  • 需要原始伺服器請求政策 — 您必須允許列出原始伺服器請求政策中的 Client-CertClient-Cert-Chain標頭,原始伺服器才能接收它們。

  • Certificate-chain-depth — CloudFront 允許用戶端憑證鏈的深度上限為 4,以便轉送至原始伺服器。

啟用傳遞模式

主控台

  1. 更新所有快取行為以使用受管CachingDisabled快取政策。

  2. 開啟 CloudFront 主控台並選擇您的分佈。

  3. 選擇一般索引標籤,然後選擇設定下的編輯

  4. 檢視器交互身分驗證 (mTLS) 下,選取傳遞

  5. 選擇儲存變更

AWS CLI

確保所有快取行為都參考 受管CachingDisabled政策,然後更新分佈組態:

{ "ViewerMtlsConfig": { "Mode": "passthrough" } }

轉送至原始伺服器的標頭

CloudFront 會將下列標頭新增至傳送至原始伺服器的請求:

  • Client-Cert — 用戶端提供的終端實體 (分葉) 憑證,以 base64 編碼。

  • Client-Cert-Chain — 憑證鏈 (不含分葉),做為結構化欄位清單。每個憑證都是 base64 編碼。 Client-Cert-Chain 是清單類型標頭。它可能會在請求中出現多次。串連所有值會保留原始鏈結順序。當用戶端僅提供單一憑證時,Client-Cert-Chain會省略 。

CloudFront 會在新增實際憑證資料之前,從用戶端請求捨棄任何傳入的 Client-CertClient-Cert-Chain標頭。這可防止標頭詐騙。

自訂憑證標頭

在檢視器請求 CloudFront Functions 中使用 mTLS 協助程式函數,在憑證標頭到達原始伺服器之前重新命名、重新格式化或合併憑證標頭。從使用不同標頭名稱或憑證編碼格式的其他服務遷移時,這很有用。