netcore使用gRPC时去掉SSL设置

gRPC使用HTTP2传输,当netcore 调用时默认是使用ssl加密.如果不方便部署ssl站点,或者不想在代码中使用https调用。可在调用RPC服务之前声明:

#增加代码,如果是内网调用,可不关注https
            if (!SERVER_GRPC.StartsWith("https"))
            {
                AppContext.SetSwitch(
                    "System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
            }

 

完整测试代码

   private const string SERVER_GRPC = "http://192.168.0.238:5009";

   public static async Task Main()
   {
            #去掉https支持关键代码
            if (!SERVER_GRPC.StartsWith("https"))
            {
                AppContext.SetSwitch(
                    "System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
            }

            //1.声明客户端
            var channel = GrpcChannel.ForAddress(SERVER_GRPC);
            var searchClient = new SearchSvc.SearchSvcClient(channel);
            var  response=searchClient.Search(new SearchRequest() { Keywords = "test" });
  }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想在本地测试 .NET Core SSL Socket 连接,你可以使用自签名证书来进行测试。以下是一些步骤: 1. 生成自签名证书 可以使用 OpenSSL 工具生成自签名证书。在 Windows 上,你可以使用 Git Bash 或 Cygwin 中的 OpenSSL 工具。在 Linux 上,OpenSSL 工具通常已经包含在系统中。 以下是生成自签名证书的命令: ``` openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 ``` 这将生成一个有效期为 365 天的自签名证书,并将密钥和证书分别保存到 key.pem 和 cert.pem 文件中。 2. 使用自签名证书设置 .NET Core SSL Socket 下面是一个简单的 .NET Core SSL Socket 示例代码: ```csharp using System; using System.Net.Security; using System.Net.Sockets; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; using System.Text; class Program { static void Main(string[] args) { var certificate = new X509Certificate2("cert.pem"); var listener = new TcpListener(System.Net.IPAddress.Loopback, 12345); listener.Start(); while (true) { Console.WriteLine("Waiting for connection..."); using (var client = listener.AcceptTcpClient()) using (var stream = client.GetStream()) using (var ssl = new SslStream(stream)) { ssl.AuthenticateAsServer(certificate, false, SslProtocols.Tls, true); Console.WriteLine("Client connected."); var buffer = new byte[4096]; var bytesRead = ssl.Read(buffer, 0, buffer.Length); Console.WriteLine(Encoding.UTF8.GetString(buffer, 0, bytesRead)); var response = Encoding.UTF8.GetBytes("Hello, world!"); ssl.Write(response, 0, response.Length); } } } } ``` 在此示例中,我们使用 `TcpListener` 监听本地回环地址的 12345 端口,并使用 `X509Certificate2` 类加载自签名证书。然后,我们在一个无限循环中等待客户端连接,并在连接成功使用 `SslStream` 对象进行身份验证和加密通信。 你可以使用任何支持 SSL/TLS 的客户端来测试这个示例代码。比如,你可以使用 OpenSSL 命令行工具: ``` openssl s_client -connect localhost:12345 -quiet ``` 这会连接到本地回环地址的 12345 端口,并尝试与 SSL/TLS 进行握手。如果一切正常,你将看到 "Hello, world!" 的响应。 注意:在生产环境中,你应该使用由受信任的证书颁发机构颁发的证书,而不是自签名证书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值