当前,我想将gRPC方法公开为公共API并受Auth0(JWT令牌)保护,使用Istio(Envoy代理)将有助于在服务器端验证令牌。由于JWT令牌未按标准加密(仅用于最终用户身份验证和授权层),因此我想使用TLS加密通信。另外,我的公共服务器已经具有有效的证书。
问题出在gRPC客户端。我看到的每个示例,gRPC客户端都必须使用服务器cert pem文件初始化TLS连接。真的有必要吗?因为它增加了操作负担和复杂性,所以每次我们续订证书时都必须在其中分发服务器pem文件,并且/或者客户端必须重新启动应用程序。
谢谢, 阿贡
答案 0 :(得分:0)
如果使用的是自签名证书,则必须在客户端中明确信任它。如果您在服务器上使用公共签名的证书,则gRPC将使用操作系统的证书颁发机构来验证证书。 (对于Java,它使用JVM的证书颁发机构。)
答案 1 :(得分:0)
如果您使用的是自签名证书,则需要在创建通道时传递的pem_root_certs
结构的SslCredentialsOptions
成员的pem_root_certs
成员中指定服务器的根证书。
但是,如果您使用的是CA颁发的证书,将COMPUTE AVG OF height ON REPORT;
SELECT name, height || ' ft'
FROM buildings;
>>>
NAME HEIGHT
======== =========
A1 1,000 ft
**** ---------
avg 500 ft
成员保留为空将导致gRPC to default to its own master list(reviewable online),not any OS-specific list。