gRPC的新功能,无法找到有关如何在服务器端启用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.
Run Code Online (Sandbox Code Playgroud)
这是我的代码
var keypair = new KeyCertificatePair(
File.ReadAllText(@"root-ca.pem"),
File.ReadAllText(@"ssl-private.key"));
SslServerCredentials creds = new SslServerCredentials(new List<KeyCertificatePair>() {keypair});
Server server = new Server
{
Services = { GrpcTest.BindService(new GrpcTestImpl()) },
Ports = { new …Run Code Online (Sandbox Code Playgroud) 我尝试使用 SSL/TLS 实现 gRPC,我阅读了有关如何实现 SSL/TLS 的文档,但这不起作用,我在 C# 中找到了一个 stackoverflow 页面TLS support for GRPC关于如何实现 TLS 支持,但是再次这不起作用。
我正在使用 C#,但我有一个 Java 实现,我尝试将 C# 服务与 Java 客户端连接并工作,但是当我尝试将 C# 客户端与 C# 服务器连接时,它不起作用,即使我尝试连接带有 Java 服务器的 C# 客户端,它不起作用。
我正在使用greet protos 和Visual Studio 2015
根据文档,此代码必须工作
首先,我尝试将其用于客户端:
SslCredentials secureChanel = new SslCredentials(File.ReadAllText("ssl/ca.crt"));
Channel channel = new Channel("localhost", 50051, secureChanel);
Run Code Online (Sandbox Code Playgroud)
然后我为此更改了代码:
var rootCert = File.ReadAllText("ssl/ca.crt");
var keyCertPair = new KeyCertificatePair(
File.ReadAllText("ssl/server.crt"),
File.ReadAllText("ssl/server.pem"));
var clientCredentials = new SslCredentials(rootCert, keyCertPair);
var options = new List<ChannelOption>
{
new ChannelOption(ChannelOptions.SslTargetNameOverride, …Run Code Online (Sandbox Code Playgroud)