【问题标题】:Secure client not using highest TLS version不使用最高 TLS 版本的安全客户端
【发布时间】:2022-11-04 20:03:01
【问题描述】:

我正在更新一个旧的 .Net 项目,它针对 .Net Framework 4.8。 问题是我正在使用 HttpClient 将一些数据发布到端点,使用类似于下面的代码(为便于阅读而编辑)

var jsonString = JsonConvert.SerializeObject(myData, jsonSettings);
var _client = new HttpClient();
var content = new StringContent(jsonString, Encoding.UTF8, "application/json");
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls13;
var response = _client.PostAsync(endpoint, content).Result;

问题是它抛出“请求被中止:无法创建 SSL/TLS 安全通道”。例外。使用 Wireshark 我可以看到连接到达正确的端点,并且远程端点向客户端握手返回致命响应,但我的客户端正在尝试使用 TLS1.0。我正在使用 System.Net.Http v4.3.4,如果添加或删除,设置 SecurityProtocolType.Tls13 似乎没有什么区别(因为 .Net 4.8 可能不需要它)。

如何让我的项目使用 Tls1.3 ?

我有另一个调用相同端点的项目,并且工作正常,但我看不出它们之间的区别。

【问题讨论】:

  • 您的 app.config (任一项目)中有任何内容吗? IIRC那里有一些影响TLS版本的开关
  • @canton7 - 没什么明显的。我查看了 assemblyBinding 条目,它们引用了与我的其他工作项目相同的版本。

标签: c# .net http ssl


【解决方案1】:

好吧,完全是我的错。我的客户端点没有使用 Tls1.3 !!

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13;

这解决了它。抱歉,感谢您的关注。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-20
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 2018-09-22
    • 1970-01-01
    相关资源
    最近更新 更多