Grpc.core TLS 握手与本地主机自签名证书

问题描述

我在本地机器上运行了一个 gRPC 服务,它期望通过 TLS 发出请求。

当我使用 Grpc.Net.Client 库时,以下工作:

var channelGrpcNetClient = GrpcChannel.ForAddress("https://localhost:5003");
var clientGrpcNetClient = new ProvisionClient(channelGrpcNetClient);
await clientGrpcNetClient.CreateAsync(createRequest);

然而,当我尝试在 Grpc.Core 中做类似的事情时,它不再起作用

var channelGrpcCore = new Channel("https://127:0:0:1",5003,new SslCredentials());
var clientGrpcCore= new ProvisionClient(channelGrpcCore );
await clientGrpcCore.CreateAsync(createRequest);

这是我得到的例外:

Grpc.Core.RpcException: 'Status(StatusCode="Unavailable",Detail="无法连接到所有地址",DebugException="Grpc.Core.Internal.CoreErrorDetailException: {"created":"@1622691838.697000000","description":"选择子频道失败","file":"......\src\core\ext\filters\client_channel\client_channel.cc","file_line":5420,"referenced_errors":[{ "created":"@1622691838.697000000","description":"无法连接到所有地址","file":"......\src\core\ext\filters\client_channel\lb_policy\pick_first\pick_first. cc","file_line":398,"grpc_status":14}]}")'

Grpc.Core 库是否不允许使用本地主机自签名证书的 TLS 连接?似乎 Grpc.Core 使用 BoringSSL,它与 Grpc.Net.Client 使用的库不同。我想知道是否有解决此问题的方法,允许在本地运行客户端和服务器,并且仅使用自签名证书。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)