【问题标题】:How to handle HttpWebRequest C# with Tls 1.3如何使用 Tls 1.3 处理 HttpWebRequest C#
【发布时间】:2019-03-19 11:39:40
【问题描述】:

由于此错误消息,我无法使用 WebRequest 连接到 HTTPS 服务器 (TLS 1.3):

请求中止:无法创建 SSL/TLS 安全通道。

以前的 TLS 版本是 1.2,使用以下代码我可以正确获取页面,但是当页面 ssl 升级到 TLS 1.3 时出现错误,并且我找不到任何解决方案:

ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

其实我觉得应该是这样的:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls13;

但没有。

【问题讨论】:

  • 我很确定 SChannel(Windows TLS 堆栈)目前不支持 TLS 1.3,因此 C# 也不支持。但是今天只接受 TLS 1.3 将是傻瓜或有非常特殊的要求,因为仍然缺乏对常用库的支持。我宁愿怀疑您的问题有所不同,但您没有提供足够的信息。
  • 谢谢。我尝试了所有的 SecurityProtocolType,但我都得到了一个错误。我想获取一个具有 TLS 1.3 的网页。您还需要什么信息?
  • 我的意思是我尝试了这些:ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls |安全协议类型.Tls11 |安全协议类型.Tls12 |安全协议类型.Ssl3;

标签: ssl httpwebrequest tls1.3


【解决方案1】:

现在似乎支持 TLS13 作为 4.8 .Net Framework 的一部分

https://docs.microsoft.com/en-us/dotnet/api/system.net.securityprotocoltype?view=netframework-4.8

但它仅在较新的 Window 操作系统版本(windows 11 和 server 2022+)上受支持,请参阅 here 了解完整支持详情。

【讨论】:

  • 4.8 声明了SecurityProtocolType.Tls13 常量。不幸的是,由于 .NET 使用 Schannel,因此尚不支持 TLS 1.3。根据docs.microsoft.com/en-us/windows/win32/secauthn/…,它应该在 Windows Server 2022 上支持 TLS 1.3。
  • 在一些随机的 Windows 7 机器上遇到了类似的问题。那么,如果我的 .net 应用程序升级到 4.8 版本,是否可以稳定地使 httprequests 成功?
猜你喜欢
  • 2021-06-06
  • 2020-03-02
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
相关资源
最近更新 更多