微服务中的服务网格如何实现双向 TLS?

来源:这里教程网 时间:2026-02-21 17:27:41 作者:

服务网格通过在每个服务实例旁部署边车代理(Sidecar Proxy),自动处理服务间通信的安全性,双向 TLS(mTLS)正是在这种架构下实现的。整个过程对应用透明,无需修改业务代码。

边车代理接管通信

在服务网格中(如 Istio),每个服务都伴随一个边车代理(如 Envoy)。所有进出服务的流量都会经过这个代理。代理之间可以协商加密通道,从而实现 mTLS。

服务 A 发起请求时,其边车代理自动拦截 outbound 流量 目标服务 B 的边车代理接收 inbound 流量 两个边车之间建立 TLS 连接,验证彼此身份证书

证书与密钥管理

服务网格控制平面(如 Istio 的 Citadel)负责签发和分发短期证书。

每个工作负载获得唯一的工作负载证书(基于 SPIFFE ID) 证书定期轮换,提升安全性 密钥和证书通过安全通道注入到边车代理中,不暴露给应用

自动协商 mTLS

当两个边车代理建立连接时,执行标准的 TLS 握手,并交换证书进行双向验证。

客户端代理发送自己的证书并验证服务端证书 服务端代理同样验证客户端证书的有效性和信任链 只有双方都通过验证,连接才会建立 一旦建立,数据在传输过程中全程加密

策略控制与渐进启用

mTLS 可以通过配置策略按命名空间或服务逐步启用。

使用 DestinationRule 配置是否启用 mTLS 支持 STRICT、PERMISSIVE 等模式,便于迁移 例如:允许旧服务明文通信,新服务强制 mTLS

基本上就这些。服务网格把 mTLS 的复杂性封装在基础设施层,开发者只需关注业务逻辑,安全通信由平台自动保障。

相关推荐