gpt4 book ai didi

ssl - 在 gRPC TLS 中禁用证书检查

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:43 32 4
gpt4 key购买 nike

目前,我有一个 ngnix 服务器(在端口 5001 上),其后运行着一个 gRPC 服务器,nginx 启用了 TLS。所有 gRPC 客户端都需要将请求发送到 nginx 端口,该端口转发到运行的 gRPC 服务器。最初是为了测试使用 usePlaintext() 发出 gRPC 请求并且一切正常,但最终目标是使用 TLS。这里的要求是(因为这是内部应用程序),gRPC channel 请求不需要传递证书,而是在创建 channel 时执行“跳过证书”。谷歌搜索后,我在 TLS 上找到了示例,但它们都采用 .cert、.key 文件。下面是我试过的片段,它在服务器端失败无法验证证书

 (java code)              
ManagedChannel channel = NettyChannelBuilder.forAddress(<server IP address>, 5001).sslContext(GrpcSslContexts.forClient().trustManager
(new File(<.cert file>).build())
.build();

做更多的研究,我看到 Golang 有 InsecureSkipVerify() 使用它我可以跳过 ceritifcate 检查(如果我错了请纠正我)

tc := credentials.NewTLS(&tls.Config{
InsecureSkipVerify: true,
})

现在我如何在 java 中完成同样的事情?

最佳答案

禁用证书检查的 TLS 的用处值得怀疑,因为它可以被简单地进行 MITMed,因此不受 gRPC 的“支持”。我强烈建议为客户端提供适当的根证书以验证服务器。

也就是说,您可以通过传递 Netty 的 InsecureTrustManagerFactory 绕过 gRPC 的 API 来执行此操作SslContextBuilder.trustManager(TrustManagerFactory):

NettyChannelBuilder.forAddress("<server IP address>", 5001)
.sslContext(GrpcSslContexts.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.build())
.build();

关于ssl - 在 gRPC TLS 中禁用证书检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52540899/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com