我是C#的新手,我需要在TLS上使用GRPC。
作为试运行,我正在修改主grpc存储库中提供的示例以使用TLS。为此,我发现了另一个SO问题,似乎是个好答案:如何为gRPC启用服务器端SSL?。但是,我得到一个错误Unhandled Exception: Grpc.Core.RpcException: Status(StatusCode=Unavailable, Detail="Connect Failed")(下面有完整的跟踪)。
如果我在原始的非tls代码中指定了错误的端口,或者只是不启动服务器,则会收到相同的错误。我在Ubuntu上使用dotnet core。
代码的重要部分在下面,也可以在github的fork中找到。
客户:
var cacert = File.ReadAllText(@"../ca.crt");
var clientcert = File.ReadAllText(@"../client.crt");
var clientkey = File.ReadAllText(@"../client.key");
var ssl = new SslCredentials(cacert, new KeyCertificatePair(clientcert, clientkey));
var channel = new Channel("localhost", 555, ssl);
var client = new Greeter.GreeterClient(channel);
String user = "you";
var reply = client.SayHello(new HelloRequest {Name = user});
Console.WriteLine("Greeting: " + reply.Message);
channel.ShutdownAsync().Wait();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
服务器:
var cacert = File.ReadAllText(@"../ca.crt");
var …Run Code Online (Sandbox Code Playgroud)