繁体   English   中英

使用 .NET Framework 4.7+ 发出 TLS 1.2 请求的问题

[英]Issues making a TLS 1.2 request with .NET Framework 4.7+

我们有一个在 Azure 云应用服务上运行的 .NET 4.7+ 应用程序。 当我们尝试使用 HttpWebRequest 调用最低 TLS 1.2 的 API 时,我们收到“请求中止:无法创建 SSL/TLS 安全通道”错误。 到目前为止我读过的内容:

  • Microsoft 强烈建议不要对ServicePointManager.SecurityProtocol进行硬编码,因此除非绝对必要,否则我会尽量避免使用该解决方案。 微软指南
  • .NET 4.7+ 应默认为 TLS 1.2 或使用操作系统配置。 在我的 Azure 应用程序中,TLS 1.2 被设置为Microsoft 的最低指南

什么可能导致我的应用使用较低的 TLS 版本? 我已经搜索了代码,但在任何地方都找不到手动 TLS 配置。 设置ServicePointManager.SecurityProtocol真的是我唯一的解决方案吗?

在你的代码中添加这个:

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12

或者

如果您有可执行文件,只需更新关联的配置文件,此文件始终命名为[可执行文件的名称].exe.config。 如果没有这样的文件,请创建一个。

找到或创建后,更新其内容以启用支持 TLS 1.2 所需的兼容性开关:

<?xml version="1.0" encoding="utf-8" ?>
 <configuration>
  <runtime>
  <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=false"/>
  </runtime>
</configuration>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM