【问题标题】:grpc-dotnet vs C-core grpc for .netgrpc-dotnet vs C-core grpc for .net
【发布时间】:2020-02-04 16:01:25
【问题描述】:

以前我使用 grpc 来实现 .net core 2.x,它现在被称为 C-core grpc,以区别于新的 .net core 3 版本。我喜欢新的 grpc 能够从 VS2019 中的 proto 文件编译和生成客户端/服务器存根类的方式,而不是必须从包文件夹中获取 grpc 工具,手动编译它以用于 C# 以生成客户端/服务器存根类然后导入VS。新版本的 grpc 更干净。但是,在将 C-core grpc 与 asp.net 核心 Web API 一起使用后,我确实有一些关于新 grpc-dotnet 的问题要问:

  1. 在 C-core grpc 中,SSL/TLS 证书使用 *.pem 格式。我使用 openSSL 来生成公钥/私钥 pem,如下所示:“openssl req -x509 -newkey rsa:4096 -keyout private.pem -out public.pem -days 365 -nodes -subj /CN=” .然后在服务器端,我使用 SslServerCredentials 进行设置,在客户端,使用 SslCredentials 进行设置。我已经看到如何为新的 grpc-dotnet 的客户端执行此操作,这与旧方式没有太大区别,但是新 grpc-dotnet 的服务器端现在真的不同了,使用 kestrel 配置。我不知道该怎么做。有人可以请教我吗?来自 github 的 Certifier 示例使用 pfx 文件。新的 grpc 是否仍然支持 pem 密钥文件?

  2. 现在新的 grpc-dptmet ises lestrel 似乎暗示它使用与 Web 应用程序使用的端口相同的端口,除了 http2 流量将被路由到它并且 http1.1 将由网络应用程序。现在,可以将 grpc 配置为使用另一个端口而不是 Web 应用程序正在使用的端口,还可以使用不同的 SSL/TLS 证书(如上的 *.pem 文件)而不是 IIS 中配置的端口?

如果有人能在这些方面启发我,我将不胜感激。非常感谢您。 :)

【问题讨论】:

    标签: c# grpc .net-core-3.0


    【解决方案1】:

    问题 1: Grpc.Core 使用的 .pem + .key 方式目前 grpc-dotnet 不支持,但区别仅在于接受的密钥格式。使用 openssl 命令行工具将 .pem 和 .key 部分转换为单个 .pfx 文件并不难(实际上,这里提到了您可以使用的确切命令:https://github.com/grpc/grpc-dotnet/tree/master/testassets/Certs/InteropTests

    问题 2: 使用 grpc-dotnet,您可以为 grpc 和 http 流量共享相同的端口,或者您可以公开两个不同的端口 - 每个协议一个。实现的确切设置我不是 100% 确定,但它应该相对容易实现。

    【讨论】:

    • 您好,非常感谢您解决这个问题。只是为了补充您的回复,当使用 IIS 托管具有 ASP.NET 核心的 GRPC-dptnet 服务时,是否可以在它们之间使用不同的 pfx 文件?还是必须相同?
    猜你喜欢
    • 2020-09-24
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 2021-10-11
    • 2020-11-12
    相关资源
    最近更新 更多