c# - 无法在 Visual Studio 2019 for Mac OS (HttpClient) 上运行的 .net core 3.1 代码上建立 SSL 连接
问题描述
我知道这个问题之前在 Stackoverflow 上得到了回答,并且可能看起来重复,但在 Visual Studio 2019 for MacOS (BigSur) 上的 .net core 上下文中,没有一个答案对我有用。我有以下代码来实例化和连接,HttpClient
同时绕过检查 SSL 证书:
services.AddHttpClient<ISubmitter, Submitter>(httpClient => httpClient.BaseAddress = new Uri("https://192.168.86.150:4433"))
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
{
ClientCertificateOptions = ClientCertificateOption.Manual,
ServerCertificateCustomValidationCallback =
(httpRequestMessage, cert, cetChain, policyErrors) => true
});
可用的 asp.net 核心应用程序在https://192.168.86.150:4433
同一网络上的另一台机器上的 IIS Express 上运行,并且它的 Swagger 页面在 MacOS 机器上完美可见。我可以在 Swagger 页面上看到所有 API 的曝光,但是在 VS 2019 for Mac 上开发的客户端应用程序无法连接并引发以下异常:
信息 - 类别:System.Net.Http.HttpClient.ISubmitter.LogicalHandler :开始处理 HTTP 请求 POST https://192.168.86.150:4433/api/gateway/submit :: 12/19/2020 09:48:09 信息 -类别: System.Net.Http.HttpClient.ISubmitter.ClientHandler :发送 HTTP 请求 POST https://192.168.86.150:4433/api/gateway/submit :: 12/19/2020 09:48:09 System.Net.Http .HttpRequestException :无法建立 SSL 连接,请参阅内部异常。---- System.IO.IOException:由于意外的数据包格式,握手失败。结果消息:System.Net.Http.HttpRequestException:无法建立 SSL 连接,请参阅内部异常。---- System.IO.IOException : 由于意外的数据包格式,握手失败。
我也尝试过使用ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
,但这也没有成功!我花了 3-4 天时间来解决这个问题,但没有运气。有什么办法可以绕过 MacOS 上客户端代码的证书验证?!
解决方案
推荐阅读
- java - 从表到表添加一行
- lua - 通过 TCP 套接字发送十六进制变量
- http-headers - github API check_runs 返回 415,“不支持的媒体类型”
- openstack - 输入快速启动命令时连接被拒绝 [Errno 111]
- javascript - 正则表达式匹配任何后跟数字的单词(但该单词可以包含特殊字符,如变音符号或重音符号)
- javascript - Javascript获取n个整数数组的索引总和
- javascript - React Native:如何导航到页面?
- qt - 如何在 Qt4 按钮单击时触发 .sh 文件或 bash 命令?
- haskell - 如何将我自己的 Data 构造函数转换为 Haskell 中的 List
- javascript - 方块不动 JavaScript