【问题标题】:GRCP Server throws exception when using SSLServerCredentials in C#在 C# 中使用 SSLServerCredentials 时 GRCP 服务器抛出异常
【发布时间】:2019-08-11 16:26:18
【问题描述】:

所以我目前正在尝试设置启用 ssl 的 grpc 服务器,但我总是收到异常“无法绑定端口“0.0.0.0:8888” 该端口绝对未使用。 如果它在 server.crt 中很重要,则 CN 是 localhost。 它也可以与ServerCredentials.Insecure 完美配合

更新: 我让服务器正常工作,我的证书有问题,但是现在客户端无法连接,我得到一个带有 StatusCode=Unavailable, Detail="Empty update" 的 RpcException

var cacert = File.ReadAllText($"{path}/ca.crt");
        var servercert = File.ReadAllText($"{path}/server.crt");
        var serverkey = File.ReadAllText($"{path}/server.key");
        var keypair = new KeyCertificatePair(servercert, serverkey);
        var sslCredentials = new SslServerCredentials(new List<KeyCertificatePair> { keypair }, cacert, true);

        var server = new Server
        {
            Services = { Comm.BindService(new Communicator()) },
            Ports = { new ServerPort("0.0.0.0", 8888, sslCredentials) }
        };
        server.Start();

        Console.WriteLine("Server started");
        Console.ReadKey();

        server.ShutdownAsync().Wait();

【问题讨论】:

    标签: c# ssl grpc


    【解决方案1】:

    这是一个证书问题。 https://github.com/grpc/grpc-dotnet 在这个 repo 中是一个带有证书的例子,以防其他人在苦苦挣扎

    【讨论】:

    • 嗨,Felix,我也遇到了同样的问题。您的证书问题是什么,您是如何解决的?任何帮助都会很棒,谢谢。
    • 我自己创建 ssl 密钥时出错了,我只是想尝试 ssl 身份验证,所以我只使用了 grpc-dotnet 存储库中的证书
    • 您好,感谢您的评论。所以你在客户端上使用了他们的证书。服务器呢?你是怎么做到的?
    • 你有代码示例吗,比如超级简单的?我也被困在这个问题上
    • 很抱歉没有,但我使用了此存储库中的密钥github.com/grpc/grpc-dotnet/tree/master/testassets/Certs/…
    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 2012-03-11
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多