在 HttpClient C# 中支持 TLS 1.2

Dmy*_*tro 5 c# httpclient azure-maps

下午好!我通过 HttpClient 使用 Azure Maps API。如何启用对 TLS 1.2 的支持?正如我在 Framework 4.6+ 中所知道的那样,它是受支持的。我不应该为此做任何事情吗?

小智 9

一般来说不需要在应用程序中指定任何配置即可采用最新的 TLS 协议。

learn.microsoft.com上概述了.Net 4.7 之前版本的最佳实践和方案。

在较高级别上,您应该进行审核以确保您的应用程序不会对较低 TLS 版本产生任何硬依赖。但除此之外,不需要做任何工作。

我们建议您:

  • 您的应用程序以 .NET Framework 4.7 或更高版本为目标。WCF 应用程序上的目标为 .NET Framework 4.7.1 或更高版本。
  • 不要指定 TLS 版本。配置您的代码,让操作系统决定 TLS 版本。
  • 执行彻底的代码审核以验证您没有指定 TLS 或 SSL 版本。

当您的应用程序让操作系统选择 TLS 版本时:

  • 它会自动利用未来添加的新协议,例如 TLS 1.3。
  • 操作系统会阻止发现不安全的协议。


Ath*_*ras 6

使用ServicePointManager设置安全协议。

获取或设置由 ServicePointManager 对象管理的 ServicePoint 对象使用的安全协议。

HttpClient httpClient = new HttpClient();   

//specify to use TLS 1.2 as default connection
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Run Code Online (Sandbox Code Playgroud)

此属性选择用于新连接的安全套接字层 (SSL) 或传输层安全 (TLS) 协议的版本;现有连接不会改变。

从 .NET Framework 4.7 开始,此属性的默认值为 SecurityProtocolType.SystemDefault。这允许基于 SslStream 的 .NET Framework 网络 API(例如 FTP、HTTP 和 SMTP)从操作系统或系统管理员执行的任何自定义配置继承默认安全协议。

  • 您不需要在 .NET Framework 4.6+ 和支持的操作系统版本中执行此操作。它也不会*启用* TLS1.2,它会*阻止*使用任何更低的版本。在 4.6 之前,协商从 TLS1.1 向下开始,需要切换才能强制使用 TLS1.2 (3认同)