本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
相互TLS认证
重要
终止支持通知:2026 年 9 月 30 日, Amazon 将停止对的支持。 Amazon App Mesh 2026 年 9 月 30 日之后,您将无法再访问 Amazon App Mesh 控制台或 Amazon App Mesh 资源。如需了解更多信息,请访问此博客文章从迁移 Amazon App Mesh 到 Amazon S ECS ervice Connect
双向TLS(传输层安全)身份验证是其中的一个可选组件TLS,它提供双向对等身份验证。相互TLS身份验证增加了安全层,TLS并允许您的服务验证正在建立连接的客户端。
客户端-服务器关系中的客户端还会在会话协商过程中提供 X.509 证书。服务器使用此证书来识别和验证客户端。此过程有助于验证证书是否由可信证书颁发机构 (CA) 颁发,以及该证书是否为有效证书。它还使用证书上的主题备用名称 (SAN) 来识别客户端。
您可以为支持的所有协议启用双向TLS认证 Amazon App Mesh。它们是TCP,HTTP/1.1,HTTP/2,g。RPC
注意
使用 App Mesh,您可以为来自您的服务的 Envoy 代理之间的通信配置相互TLS身份验证。但是,您的应用程序与 Envoy 代理之间的通信未加密。
相互TLS认证证书
Amazon App Mesh 支持两种可能的证书来源进行相互TLS身份验证。客户端策略中的TLS客户端证书和侦听器TLS配置中的服务器验证可以从以下来源获取:
-
文件系统 - 来自正在运行的 Envoy 代理的本地文件系统的证书。要向 Envoy 分发证书,您需要提供证书链的文件路径和 App Mesh 的私钥API。
-
E@@ nvoy's Secret Discovery Service (SDS) — 实施SDS并允许向 Envoy 发送证书的 Bring-your-own边车。它们包括SPIFFE运行时环境 (SPIRE)。
重要
App Mesh 不存储用于相互TLS身份验证的证书或私钥。相反,Envoy 会将它们存储在内存中。
配置网格端点
为您的网状端点(例如虚拟节点或网关)配置相互TLS身份验证。这些端点提供证书并指定可信机构。
为此,您需要为客户端和服务器配置 X.509 证书,并在TLS终止和启动的验证上下文中明确定义可信机构证书。TLS
- 网格内部的信任
-
服务器端证书在虚拟节点侦听器(TLS终止)中配置,客户端证书在虚拟节点服务后端(发起)中配置。TLS作为此配置的替代方案,您可以为虚拟节点的所有服务后端定义默认的客户端策略,然后,如果需要,可以根据需要为特定后端覆盖此策略。虚拟网关只能使用适用于其所有后端的默认客户端策略进行配置。
您可以通过为两个网格的虚拟网关上的入站流量启用相互TLS身份验证来配置不同网格之间的信任。
- 网格之外的信任
-
在虚拟网关侦听器中指定服务器端证书以进行TLS终止。配置与您的虚拟网关通信的外部服务以提供客户端证书。证书应派生自服务器端证书在 Virtual Gateway 侦听器上使用的证书颁发机构之一 (CAs)。TLS
将服务迁移到双向TLS身份验证
在 App Mesh 中将现有服务迁移到相互TLS身份验证时,请遵循以下准则以保持连接。
迁移服务通过明文进行通信
-
在服务器端点上启用TLS配置
PERMISSIVE
模式。此模式允许纯文本流量连接到端点。 -
在服务器上配置相互TLS身份验证,指定服务器证书、信任链以及可选的可信证书SANs。
-
确认通信是通过TLS连接进行的。
-
在您的客户端上配置相互TLS身份验证,指定客户端证书、信任链以及可选的可信证书SANs。
-
在服务器上启用TLS配置
STRICT
模式。
迁移服务通过通信进行 TLS
-
在您的客户端上配置相互TLS设置,指定客户端证书和可信证书(可选)SANs。直到后端服务器请求客户端证书后,才会将其发送到其后端。
-
在服务器上配置相互TLS设置,指定信任链,也可以指定信任链SANs。为此,您的服务器会请求客户端证书。
验证双向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) 与客户端SANs信任的任何名称都不匹配。
cluster.cds_egress_my-mesh_my-backend-node_http_9080.ssl.fail_verify_san: 5
App Mesh 双向TLS身份验证演练
-
相互TLS身份验证演练
:本演练描述了如何使用 App Mesh CLI 构建具有相互TLS身份验证功能的彩色应用程序。 -
TLSSDS基于亚马逊EKS互助的演练
:本演练展示了如何在亚马逊EKS和SPIFFE运行时环境 () SPIRE 中使用TLSSDS基于相互的身份验证。 -
Amazon TLS 基于文件的EKS相互演练
:本演练展示了如何在 Amazon EKS 和 Runt SPIFFE ime Environment () 中使用基于TLS文件的相互身份验证。SPIRE