我正在尝试从客户端连接到服务。该服务已配置为使用自签名的Ssl证书,我正在尝试使用客户端证书配置客户端。我正在使用此代码:
string cacert = System.IO.File.ReadAllText("certificados/ca.crt");
string cert = System.IO.File.ReadAllText("certificados/client.crt");
string key = System.IO.File.ReadAllText("certificados/client.key");
KeyCertificatePair keypair = new KeyCertificatePair(cert, key);
SslCredentials sslCreds = new SslCredentials(cacert, keypair);
var channel = GrpcChannel.ForAddress("https://x.x.x.x:5001", new GrpcChannelOptions { Credentials = sslCreds });
var client = new Gestor.GestorClient(channel);
但是我收到以下错误:GrpcChannel不支持将SslCredentials与非null参数一起使用。
我不太了解邮件错误。SslCredentials是ChannelCredentials吗?类型,而SslCreds是Grpc.Core.SslCredentials。它可以被编译,所以我猜它是正确的类型。
我想知道的是如何配置客户端以使用自己创建的自签名证书。
谢谢。
仅在可用的grpc-dotnet中支持SslCredentials,以便在最常见的用例中提供与Grpc.Core的某种程度的兼容性,尽管它并未公开所有功能。在grpc-dotnet中,仅支持SslCredentials()(使用默认根目录的无参数)。如果您想提供自签名证书,那么您当然可以这样做,您需要使用其他API来配置GrpcChannel:
请参见此处的示例(使用自定义凭据创建GrpcChannel)。https://github.com/grpc/grpc-dotnet/blob/dd72d6a38ab2984fd224aa8ed53686dc0153b9da/testassets/InteropTestsClient/InteropClient.cs#L170
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句