Tag: grpc

C#中对GRPC的TLS支持

我对C#很新,我需要在TLS上使用GRPC。 作为一个干运行,我正在修改主grpc仓库中提供的示例以使用TLS。 要做到这一点,我发现了另一个SO问题似乎是一个很好的答案: 如何为gRPC启用服务器端SSL? 。 但是,我得到一个错误Unhandled Exception: Grpc.Core.RpcException: Status(StatusCode=Unavailable, Detail=”Connect Failed”) (下面的完整跟踪)。 如果我在原始的非tls代码中指定了错误的端口或者只是不启动服务器,我会得到相同的错误。 我在Ubuntu上使用dotnet核心。 代码的重要部分如下所示,也可以在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 = […]

GRPC异步响应流C#

如何从处理程序外部为RPC生成流响应值? (具体来说,来自IObservable)我目前正在执行以下操作,但这是创建跨线程问题,因为在RPC处理程序之间共享AnRxObservable … public override Task GetTicker(RequestProto request, ServerCallContext context) { var subscription = AnRxObservable.Subscribe(value => { responseStream.WriteAsync(new ResponseProto { Value = value }); }); // Wait for the RPC to be canceled (my extension method // that returns a task that completes when the CancellationToken // is cancelled) await context.CancellationToken.WhenCancelled(); // Dispose of the […]

如何为gRPC启用服务器端SSL?

gRPC的新function,无法找到有关如何在服务器端启用SSL的任何示例。 我使用openssl生成了一个密钥对,但它抱怨私钥无效。 D0608 16:18:31.390303 Grpc.Core.Internal.UnmanagedLibrary Attempting to load native library “…\grpc_csharp_ext.dll” D0608 16:18:31.424331 Grpc.Core.Internal.NativeExtension gRPC native library loaded successfully. E0608 16:18:43.307324 0 ..\src\core\lib\tsi\ssl_transport_security.c:644: Invalid private key. E0608 16:18:43.307824 0 ..\src\core\lib\security\security_connector.c:821: Handshaker factory creation failed with TSI_INVALID_ARGUMENT. E0608 16:18:43.307824 0 ..\src\core\ext\transport\chttp2\server\secure\server_secure_chttp2.c:188: Unable to create secure server with credentials of type Ssl. 这是我的代码 var keypair = new […]