当前位置: 首页 > 知识库问答 >
问题:

如何配置gRPC客户端通信通过TLS传输层没有服务器证书?

陈项禹
2023-03-14

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

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

谢谢,阿贡

共有2个答案

柯立果
2023-03-14

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

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

庄子平
2023-03-14

如果您使用的是自签名证书,那么您必须在客户机中明确信任它。如果您在服务器上使用公开签名的证书,gRPC将使用操作系统的证书颁发机构来验证证书(对于Java,它使用JVMs证书颁发机构)

 类似资料:
  • 我试图了解服务器-客户端网络如何为实时多人游戏工作。 假设我正在构建一个实时多人游戏,比如FPS。 如果玩家A向玩家B开枪,后端< code >服务器需要告诉玩家B他们被击中了。 我知道如何让玩家 A 告诉后端服务器他开了一枪,只是向服务器发送请求,但是如何让后端告诉玩家 他们被枪杀了? 玩家B是否必须每0.1秒检查一次后端以查看是否发生了什么事情,或者是否有更有效的方法?

  • 编辑:最后,问题似乎来自io.emit()中缺少第二个参数。现在它起作用了,非常感谢:)

  • 下面的代码片段显示了如何在gRPC AspNet核心应用程序中启用gRPC web: 客户端应用程序的代码如下所示:

  • 我有两个AWS EC2实例。服务器和客户端节点JS应用程序。 在本地,我的代码运行良好。但是在AWS,客户端会在一段时间后(例如30秒)关闭,没有任何警告/异常(由于某种原因,它无法找到并连接到服务器) 两个AWS实例都在运行:Windows Server 2016 Base。 两个AWS实例都有自己的服务器“AWS安全组”。只是为了确保我没有阻止两个安全组当前允许的任何东西:“所有流量到任何IP

  • 我对spring boot和SSL还很陌生。我已经开发了一个SSL rest web服务器,它具有服务器密钥存储库、私钥和服务器CA,并且能够正确地处理相互X.509证书身份验证。我已经测试过,它可以与Postman和Python客户机一起工作HTTPS请求,并且所有工作都正常,服务器和客户机都可以成功地交换和验证对方的证书。 但我的情况有点不同, 我已经创建并连接了一个Postgresql数据库

  • 现在我的ServerSocket是这样的 一切正常,客户端连接,发送一些数据,服务器读取它,但我的问题是如何从我的服务器发送消息到所有的客户端?我目前保存客户端上的ArrayList,所以我可以只是循环,ArrayList打开一个作家和刷新它,但我想发送的数据,我得到我的ClientConnection类 我应该如何处理这个代码?在服务器类上完成的所有操作?或