上节提及的双向TLS认证在Istio里是按照以下机制实现的。首先,Istio通过客户端和服务端各自配备的Envoy进行通信。也就是说,客户端和服务端的流量,已被各自的Envoy所接管。
对于客户端调用服务端,遵循的步骤是:
1)Istio将出站流量从客户端重新路由到客户端的本地Sidecar Envoy。
2)客户端Envoy与服务器端Envoy开始双向TLS握手。在握手期间,客户端Envoy还要进行安全命名检查,以验证服务器证书中提供的服务账户是否有权运行目标服务。
3)客户端Envoy和服务器端Envoy建立一个双向的TLS连接,Istio将流量从客户端Envoy转发到服务器端Envoy。
4)授权后,服务器端Envoy通过本地TCP连接将流量转发到服务器服务。