首页 > 解决方案 > 如何在没有服务器证书的情况下配置通过 TLS 传输层进行通信的 gRPC 客户端?

问题描述

目前我想将 gRPC 方法公开为公共 API 并受 Auth0(JWT 令牌)保护,使用 Istio(Envoy 代理)将有助于在服务器端验证令牌。由于 JWT Token 没有被标准加密(它只用于最终用户认证和授权层),我想使用 TLS 加密通信。另外,我的公共服务器已经有有效的证书。

问题出在 gRPC 客户端。我看的每个示例,gRPC 客户端都必须使用服务器证书 pem 文件初始化 TLS 连接。真的有必要吗?因为它增加了操作负担和复杂性,我们必须在每次更新证书和/或客户端必须重新启动应用程序时分发我们的服务器 pem 文件。

谢谢, 阿贡

标签: sslgrpc

解决方案


如果您使用的是自签名证书,则需要在创建通道时传入pem_root_certs的结构成员中指定服务器的根证书,正如 Carl 所说。SslCredentialsOptions

但是,如果您使用的是 CA 颁发的证书,将pem_root_certs成员留空将导致gRPC 默认为其自己的主列表可在线查看),而不是任何特定于操作系统的列表


推荐阅读