本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
相互TLS身分驗證
重要
支援終止通知:2026 年 9 月 30 日 AWS 將停止對 的支援 AWS App Mesh。2026 年 9 月 30 日後,您將無法再存取 AWS App Mesh 主控台或 AWS App Mesh 資源。如需詳細資訊,請造訪此部落格文章,從 遷移 AWS App Mesh 至 Amazon ECS Service Connect
相互 TLS(傳輸層安全) 身分驗證是 的選用元件TLS,可提供雙向對等身分驗證。相互TLS身分驗證會在 上新增一層安全性,TLS並允許您的服務驗證正在建立連線的用戶端。
在工作階段交涉過程中,用戶端-伺服器關係中的用戶端也會提供 X.509 憑證。伺服器使用此憑證來識別和驗證用戶端。此程序有助於驗證憑證是否由信任的憑證授權機構 (CA) 發出,以及憑證是否為有效的憑證。它也會使用憑證上的主體別名 (SAN) 來識別用戶端。
您可以為 支援的所有通訊協定啟用相互TLS身分驗證 AWS App Mesh。它們是 TCP、HTTP/1.1、HTTP/2、g RPC。
注意
使用 App Mesh,您可以為來自 服務的 Envoy 代理之間的通訊設定相互TLS身分驗證。不過,您的應用程式與 Envoy 代理之間的通訊不會加密。
相互TLS身分驗證憑證
AWS App Mesh 支援兩個可能的憑證來源進行相互TLS身分驗證。用戶端政策中的TLS用戶端憑證和接聽程式TLS組態中的伺服器驗證可從下列來源取得:
-
檔案系統 – 來自正在執行之 Envoy 代理的本機檔案系統的憑證。若要將憑證分發給 Envoy,您需要提供憑證鏈的檔案路徑和 App Mesh 的私有金鑰API。
-
Envoy 的秘密探索服務 (SDS) – Bring-your-own 實作SDS並允許憑證傳送至 Envoy 的邊車。其中包括SPIFFE執行期環境 (SPIRE)。
重要
App Mesh 不會儲存用於相互TLS身分驗證的憑證或私有金鑰。相反地,Envoy 會將它們存放在記憶體中。
設定網格端點
為您的網格端點設定相互TLS身分驗證,例如虛擬節點或閘道。這些端點提供憑證並指定信任的機構。
若要這麼做,您需要同時為用戶端和伺服器佈建 X.509 憑證,並在TLS終止和TLS原始伺服器的驗證內容中明確定義受信任授權憑證。
- 網格內部的信任
-
伺服器端憑證是在 Virtual Node 接聽程式 (TLS 終止) 中設定,而用戶端憑證是在 Virtual Nodes 服務後端 (TLS 原始伺服器) 中設定。作為此組態的替代方案,您可以為虛擬節點的所有服務後端定義預設用戶端政策,然後,如有需要,您可以針對特定後端覆寫此政策。Virtual Gateways 只能使用套用至其所有後端的預設用戶端政策進行設定。
您可以針對兩個網格的虛擬閘道上的傳入流量啟用相互TLS身分驗證,藉此設定不同網格之間的信任。
- 在網格外信任
-
在 Virtual Gateway 接聽程式中指定伺服器端憑證以進行TLS終止。設定與虛擬閘道通訊的外部服務,以呈現用戶端憑證。憑證應衍生自伺服器端憑證在 Virtual Gateway 接聽程式上使用的相同憑證授權機構之一 (CAs),以進行TLS起始。
將服務遷移至相互TLS身分驗證
在 App Mesh 中將現有服務遷移至相互TLS身分驗證時,請遵循這些準則以維持連線。
遷移透過純文字通訊的服務
-
在伺服器端點上啟用TLS組態
PERMISSIVE
模式。此模式允許純文字流量連線至端點。 -
在伺服器上設定相互TLS身分驗證,指定伺服器憑證、信任鏈,以及選用的信任 SANs。
-
確認通訊是透過TLS連線進行。
-
在用戶端上設定相互TLS身分驗證,指定用戶端憑證、信任鏈,以及選用的受信任 SANs。
-
為伺服器上的TLS組態啟用
STRICT
模式。
透過 遷移通訊的服務 TLS
-
在用戶端上設定相互TLS設定,指定用戶端憑證和選用的信任 SANs。在後端伺服器請求用戶端憑證之前,用戶端憑證不會傳送至其後端。
-
在您的伺服器上設定相互TLS設定,指定信任鏈和選用的信任 SANs。因此,您的伺服器會請求用戶端憑證。
驗證相互TLS身分驗證
您可以參考 Transport Layer Security:驗證加密文件,查看 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) 不符合用戶端SANs信任的任何 。
cluster.cds_egress_my-mesh_my-backend-node_http_9080.ssl.fail_verify_san: 5
App Mesh 相互TLS身分驗證演練
-
相互TLS身分驗證演練
:此演練說明如何使用 App Mesh CLI建立具有相互TLS身分驗證的彩色應用程式。 -
Amazon TLS EKS相互 SDS型演練
:此演練示範如何搭配 Amazon EKS和SPIFFE執行期環境 () 使用相互 TLS SDS型身分驗證SPIRE。 -
Amazon 以TLS檔案為基礎的EKS相互演練
:此演練示範如何搭配 Amazon EKS和SPIFFE執行期環境 () 使用以TLS檔案為基礎的相互身分驗證SPIRE。