传统的网络安全是基于边界的安全。通过将网络划分成外网和内网,在边界上部署防火墙,从而建立了一个基本假设——内网比外网安全。位于网络边界的前置代理服务器 (Nginx) 接收外部到达的加密 TLS 流量,将其解密为 HTTP 明文,然后再将流量转发到内网某个服务。在实践中,绝大多数内部服务都是以 HTTP 明文的方式通信。
随着云计算的兴起,跨云部署等场景正在逐步模糊网络安全边界。服务与服务通信不得不跨越互联网鸿沟,明文流量显而易见不再安全。
为了支持跨云部署场景下的 gRPC 服务调用,配置 mTLS 是必然的选择。笔者将在下文中详细描述整个配置方案。
下列工程使用gRPC及 grpc-spring-boot-starter
gRPC 端到端直连 mTLS 配置
首先为客户端与服务端准备必要的证书。证书链如下
这里不再详述如何签署证书,下文会提供自动化签署的方案
CA.crt |
|
server.crt |
server.key |
cl |