本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
交互 TLS 驗證
相互 TLS (傳輸層安全性) 驗證是 TLS 的選用元件,可提供雙向對等驗證。相互 TLS 驗證會透過 TLS 增加一層安全性,並允許您的服務驗證正在進行連線的用戶端。
用戶端與伺服器關係中的用戶端也會在工作階段交涉程序期間提供 X.509 憑證。伺服器會使用此憑證來識別和驗證用戶端。此程序有助於驗證憑證是否由受信任的憑證授權單位 (CA) 發行,以及憑證是否為有效的憑證。它也會使用憑證上的主體別名 (SAN) 來識別用戶端。
您可以為支援的所有通訊協定啟用相互 TLS 驗證 AWS App Mesh。它們是 TCP,HTTP /1.1,HTTP/2,gRPC。
注意
使用應用程式網格,您可以為來自您服務的 Envoy 代理伺服器之間的通訊設定相互 TLS 驗證。不過,您的應用程式和 Envoy 代理伺服器之間的通訊是未加密的。
相互 TLS 驗證憑證
AWS App Mesh 支援兩個可能的憑證來源進行相互 TLS 驗證。TLS 用戶端原則中的用戶端憑證和監聽器 TLS 組態中的伺服器驗證可以來自:
-
檔案系統:來自正在執行之 Envoy Proxy 本機檔案系統的憑證。要將證書分發給 Envoy,您需要提供證書鏈的文件路徑和 App Mesh API 的私鑰。
-
特使的秘密發現服務(SDS)- 實施 SDS 並允許將證書發送給特使的 B ring-your-own 側車。它們包括 SPEFFE 運行時環境(SPIRE)。
重要
App Mesh 不會儲存用於相互 TLS 驗證的憑證或私密金鑰。相反,特使將它們存儲在內存中。
設定網面端點
為您的網狀端點 (例如虛擬節點或閘道) 設定相互 TLS 驗證。這些端點提供憑證並指定信任的授權單位。
若要這麼做,您需要為用戶端和伺服器佈建 X.509 憑證,並在 TLS 終止和 TLS 起始的驗證內容中明確定義受信任的授權單位憑證。
- 網格內部的信任
-
伺服器端憑證在虛擬節點接聽程式 (TLS 終止) 中設定,而用戶端憑證則在虛擬節點服務後端 (TLS 起始) 中設定。作為此組態的替代方案,您可以為虛擬節點的所有服務後端定義預設用戶端原則,然後視需要為特定後端覆寫此原則。虛擬閘道只能使用套用至其所有後端的預設用戶端策略來設定。
您可以針對兩個網格的虛擬閘道上的輸入流量啟用相互 TLS 驗證,在不同網格之間設定信任。
- 網格之外的信任
-
在虛擬閘道接聽程式中指定用於 TLS 終止的伺服器端憑證。設定與虛擬閘道通訊的外部服務,以顯示用戶端憑證。憑證應衍生自伺服器端憑證在 TLS 產生的虛擬閘道接聽程式上使用的相同憑證授權單位 (CA) 之一。
將服務遷移至相互 TLS 驗證
將 App Mesh 中的現有服務移轉至相互 TLS 驗證時,請遵循這些準則來維持連線。
移轉透過純文字通訊的服務
-
在伺服器端點上啟用 TLS 組態的
PERMISSIVE
模式。此模式允許純文字流量連線到端點。 -
在您的伺服器上設定相互 TLS 驗證,指定伺服器憑證、信任鏈,以及選擇性地指定受信任的 SAN。
-
確認通信正在通過 TLS 連接進行。
-
在用戶端上設定相互 TLS 驗證,指定用戶端憑證、信任鏈,以及選擇性地指定受信任的 SAN。
-
STRICT
啟用伺服器上 TLS 組態的模式。
移轉透過 TLS 通訊的服務
-
在用戶端上設定相互 TLS 設定,指定用戶端憑證,並選擇性地指定受信任的 SAN。在後端伺服器要求之前,用戶端憑證不會傳送至後端。
-
在伺服器上設定相互 TLS 設定,指定信任鏈,以及選擇性地指定受信任的 SAN。為此,您的服務器請求客戶端證書。
驗證相互 TLS 驗證
您可以參考傳輸層安全性:驗證加密文件,以瞭解 Envoy 如何確切發出 TLS 相關統計資料。對於相互 TLS 驗證,您應該檢查以下統計資料:
-
ssl.handshake
-
ssl.no_certificate
-
ssl.fail_verify_no_cert
-
ssl.fail_verify_san
下列兩個統計資料範例共同顯示終止至虛擬節點的 TLS 連線成功,全部來自提供憑證的用戶端。
listener.0.0.0.0_15000.ssl.handshake: 3
listener.0.0.0.0_15000.ssl.no_certificate: 0
下一個統計資料範例顯示從虛擬用戶端節點 (或閘道) 到後端虛擬節點的連線失敗。伺服器憑證中顯示的主體別名 (SAN) 不符合用戶端信任的任何 SAN。
cluster.cds_egress_my-mesh_my-backend-node_http_9080.ssl.fail_verify_san: 5
App Mesh 相互 TLS 驗證逐步解說
-
相互 TLS 驗證逐步解
說:本逐步解說說明如何使用 App Mesh CLI 建置具有相互 TLS 驗證的色彩應用程式。 -
Amazon EKS 相互 TLS 軟體開發套件逐步解說:本逐步
解說說明如何在 Amazon EKS 和 SPIFE 執行階段環境 (SPIRE) 中使用以 TLS SDK 為基礎的相互身份驗證。 -
Amazon EKS 相互 TLS 檔案式逐步解說:本逐步解說
說明如何在 Amazon EKS 和 SPIFE 執行階段環境 (SPIRE) 中使用以 TLS 檔案為基礎的相互身份驗證。