C# 用于.NET Framework到.NET核心服务器的gRPC SSL通信
我可以将C#完整的.NET Framework客户端与带有安全通道的C#.NET核心客户端一起使用吗 你能给我举几个例子吗?我找不到任何地方,如果这可以做到或不能做到 详情: 我使用.NET Framework客户端和.NET核心客户端制作了一个示例,其中Grpc C#Github作为参考,Grpc dotnet的这个示例作为参考。 我能够建立一个不安全的沟通渠道C# 用于.NET Framework到.NET核心服务器的gRPC SSL通信,c#,.net,asp.net-core,protocol-buffers,grpc,C#,.net,Asp.net Core,Protocol Buffers,Grpc,我可以将C#完整的.NET Framework客户端与带有安全通道的C#.NET核心客户端一起使用吗 你能给我举几个例子吗?我找不到任何地方,如果这可以做到或不能做到 详情: 我使用.NET Framework客户端和.NET核心客户端制作了一个示例,其中Grpc C#Github作为参考,Grpc dotnet的这个示例作为参考。 我能够建立一个不安全的沟通渠道 新频道(“127.0.0.1”,5000,ChannelCredentials.unsecure) 以及ASP.NET核心服务器中于
新频道(“127.0.0.1”,5000,ChannelCredentials.unsecure)
以及ASP.NET核心服务器中于5000年打开的非Https端口
当我试图与你联系时
var通道=新通道(“127.0.0.1”,5001,新SslCredentials())代码>
到ASP.NET核心服务器i中的Https端口5000
如何使用安全通道进行通信。我想使用相同的pfx+密码组合。我运气不错。像OP一样,我还没有让它远程工作。请记住,IIS还不支持gRPC,因此您还需要找到其他托管方法。我很幸运。像OP一样,我还没有让它远程工作。请记住,IIS还不支持gRPC,因此您还需要找到其他托管方法。请检查。我创建了一个可能有用的基本示例:
您可以通过创建一个传递到SslCredentials
来配置客户端证书。您将需要三个PEM编码字符串:
PEM编码的客户端证书链
PEM编码私钥
PEM编码的服务器SSL证书
以下是一个示例设置:
var keyCertPair = new KeyCertificatePair(clientsslcert.pem, privatekey.pem);
var channelCreds = new SslCredentials(serversslcert.pem, keyCertPair);
出于测试目的,我发现。我曾经将PFX转换为PEM格式。此外,还将进一步讨论不同的PEM字符串以及为什么客户端需要显式信任服务器。请退出。我创建了一个可能有用的基本示例:
您可以通过创建一个传递到SslCredentials
来配置客户端证书。您将需要三个PEM编码字符串:
PEM编码的客户端证书链
PEM编码私钥
PEM编码的服务器SSL证书
以下是一个示例设置:
var keyCertPair = new KeyCertificatePair(clientsslcert.pem, privatekey.pem);
var channelCreds = new SslCredentials(serversslcert.pem, keyCertPair);
出于测试目的,我发现。我曾经将PFX转换为PEM格式。此外,还将进一步讨论不同的PEM字符串,以及为什么客户端需要明确信任服务器。为了下一个寻找解决方案的人,我发布了这个答案。
我已经在类似的用例问题中发布了我的解决方案,所以在我让它工作并
--下面是我自己的答案
无论是否通过SSL,您都需要在ASP.NET核心服务器中打开Http2。因此,在appsettings.json中,执行此操作
"Kestrel": {
"EndpointDefaults": {
"Protocols": "Http2"
}
不安全的.NET Framework客户端+ASP.NET核心服务器
- ASP.NET核心服务器
- 在
启动
类配置服务(IApplicationBuilder应用程序)
中删除app.usehtseredirection()和app.UseHsts()
李>
- 暴露不安全的端口,在开发过程中通常为80或5000
- 使用下面的代码在.NET Framework客户端中创建不安全的通道
安全SSL连接.NET Framework客户端+ASP.NET核心服务器
我通过在客户端使用相同服务器的.pem格式的证书来使用SSL端口
SslCredentials secureCredentials=新的SslCredentials(File.ReadAllText(“certificate.pem”);
var通道=新通道(“本地主机”,5001,安全凭证);
一点解释。VS 2019中的ASP.NETCore模板使用开发证书
pfx文件位于%AppData%\ASP.NET\Https\ProjectName.pfx
和
password=%AppData%\Microsoft\UserSecrets\{UserSecretsId}\secrets.json{:Kestrel:Certificates:Development:password}值
您可以从ProjectName.csproj
获取UserSecretsId
id。这对于每个ASP.NET核心项目都是不同的
我使用下面的命令将pfx+密码组合转换为certificate.pem
文件
openssl pkcs12 -in "<DiskLocationOfPfx>\ProjectName.pfx" -out "<TargetLocation>\certifcate.pem" -clcerts
请注意,我使用的端口5001是ASP.NET核心应用程序的SSL端口
用于生产场景
使用来自证书签名机构的有效证书,并在ASP.NET核心服务器和.NET Framework客户端中分别使用与pfx
和pem
相同的证书。我发布此答案是为了下一个寻找解决方案的人。
我已经在类似的用例问题中发布了我的解决方案,所以在我让它工作并
--下面是我自己的答案
无论是否通过SSL,您都需要在ASP.NET核心服务器中打开Http2。因此,在appsettings.json中,执行此操作
"Kestrel": {
"EndpointDefaults": {
"Protocols": "Http2"
}
不安全的.NET Framework客户端+ASP.NET核心服务器
- ASP.NET核心服务器
- 在
启动
类配置服务(IApplicationBuilder应用程序)
中删除app.usehtseredirection()和app.UseHsts()
李>
- 暴露不安全的端口,在开发过程中通常为80或5000
- 使用下面的代码在.NET Framework客户端中创建不安全的通道
安全SSL连接.NET Framework客户端+ASP.NET核心服务器
我通过在客户端使用相同服务器的.pem格式的证书来使用SSL端口
SslCredentials secureCredentials=新的SslCredentials(File.ReadAllText(“certificate.pem”);
var通道=新通道(“本地主机”,5001,安全凭证);
一点解释。VS 2019中的ASP.NETCore模板使用开发证书
pfx文件位于%AppData%\ASP.NET\Https\ProjectName.pfx
和
password=%AppData%\Microsoft\UserSecrets\{UserSecretsId}\secrets.json{:Kestrel:Certificates:Development:password}值
你可以