ssl - 如何在没有服务器证书的情况下配置通过 TLS 传输层进行通信的 gRPC 客户端?
问题描述
目前我想将 gRPC 方法公开为公共 API 并受 Auth0(JWT 令牌)保护,使用 Istio(Envoy 代理)将有助于在服务器端验证令牌。由于 JWT Token 没有被标准加密(它只用于最终用户认证和授权层),我想使用 TLS 加密通信。另外,我的公共服务器已经有有效的证书。
问题出在 gRPC 客户端。我看的每个示例,gRPC 客户端都必须使用服务器证书 pem 文件初始化 TLS 连接。真的有必要吗?因为它增加了操作负担和复杂性,我们必须在每次更新证书和/或客户端必须重新启动应用程序时分发我们的服务器 pem 文件。
谢谢, 阿贡
解决方案
如果您使用的是自签名证书,则需要在创建通道时传入pem_root_certs
的结构成员中指定服务器的根证书,正如 Carl 所说。SslCredentialsOptions
但是,如果您使用的是 CA 颁发的证书,将pem_root_certs
成员留空将导致gRPC 默认为其自己的主列表(可在线查看),而不是任何特定于操作系统的列表。
推荐阅读
- node.js - Nodejs Expressjs Mongodb Javascript 单元测试使用 Mocha Chai Sinon 进行随机 Nodejs 项目
- javascript - CORS 策略已阻止从源“http://localhost:3000”访问 XMLHttpRequest
- sql - 显示两列,但其中一列与 SQL Server 中另一个表中的另一列联合
- decidable - 具有有限状态的给定 TM 是否可判定?
- python - 在 Python 中打印倒金字塔
- java - 当对象足够大时,如何告诉杰克逊序列化程序停止继续序列化和写入
- mongodb - 如何使用 mongoDB 中的聚合为数组中的每个元素添加求和字段
- python - Python ThreadPoolExecutor:没有按预期工作?
- flutter - 单引号中的flutter_html图像src标签
- generics - 从 num 扩展的泛型类型和从 int 到 double 类型转换的问题