gpt4 book ai didi

c# - 是否可以在 Grpc.Core 中接受自签名证书?

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:01 26 4
gpt4 key购买 nike

场景:我有一个用 C# 实现的客户端,它应该使用 gRPC 连接到服务器,使用 SSL 进行加密连接。但是,服务器使用的证书可能是也可能不是自签名的。

在文档中,我只看到我可以通过使用自定义根证书(或使用不会验证自签名证书的公共(public)根 CA)来设置不安全(根本没有 SSL)或安全的 channel 凭证),这实际上意味着我必须确保以 root 身份安装自签名服务器证书。基本上,我该如何以编程方式做到这一点?

var channelCredentials = new SslCredentials(rootAsPem); 
// FIXME: specify that channelCredentials can accept self-signed certificates or fetch certificates?
var channel = new Channel("myservice.example.com", channelCredentials);
var client = new Greeter.GreeterClient(channel);

我想实现的是询问用户“嘿,你配置的服务器使用自签名证书,你同意吗?”如果是,请将证书作为根证书安装在 PEM 中。

我现在的主要问题是:

  1. 我如何获得服务器证书?我目前得到的只是一个异常(exception)。
  2. 是否可以避免必须将服务器证书安装为根证书?

最佳答案

var httpClientHandler = new HttpClientHandler();
// Return `true` to allow certificates that are untrusted/invalid
httpClientHandler.ServerCertificateCustomValidationCallback =
HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;
var httpClient = new HttpClient(httpClientHandler);
var channel = GrpcChannel.ForAddress("https://localhost:5001",
new GrpcChannelOptions { HttpClient = httpClient });
var client = new Greet.GreeterClient(channel);

https://learn.microsoft.com/en-us/aspnet/core/grpc/troubleshoot?view=aspnetcore-3.0

关于c# - 是否可以在 Grpc.Core 中接受自签名证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55364545/

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