首页 > 解决方案 > 强制 HttpClient 强制 TSL 高于 1.0

问题描述

我的 WPF 应用程序连接到 Azure Web API。端点将被配置为拒绝访问任何非安全 (HTTP) 或弱安全(具有 TLS 1.0 或更早版本的 HTTPS)请求。但我也希望我的应用程序永远不要尝试发送非安全或弱安全请求。

Microsoft 建议在这里那里以 Framework 4.7 为目标并保留ServicePointManager.SecurityProtocol其默认值,以便操作系统确定要使用的协议。

我提到的第二篇文章也表明 Windows 7 将依赖 TLS 1.0,在强烈建议不要依赖 TLS 1.0 之后仅几行。所以我知道我可以相信操作系统可以获得它可用的最好的安全层,但如果最好的选择仍然是一个糟糕的选择,我不能相信操作系统不会发送请求。

我的应用程序依赖于System.Net.Http.HttpClient. 我想确保我通过这个客户拨打的电话是:

  1. 始终安全。也就是说,始终使用 HTTPS,永远不要使用 HTTP。
  2. 始终保持在足够的水平。也就是说,至少依赖 TLS 1.1;但绝不是 TLS 1.0 或 SSL。

我怎样才能做到这一点?

标签: c#.netvb.netsecurityhttps

解决方案


正如开发人员在 HttpClient 协商从操作系统传递的 TLS 之前所说的那样。特别是在 W7 中,默认情况下未启用以允许应用程序正确使用它。为了解决这个问题,如果您不想在运行您的应用程序的机器上更新 .NET 框架,或者您没有在操作系统上进行任何更新,您需要更新注册表中的一些键。您可以通过 VB.Net 中的代码来实现。在下面的示例中,我想向您展示需要更新/设置的键。此外,如果您获得此代码并创建一个 .reg 文件并尝试执行,则可以解决您机器中的问题,但对于分布式应用程序,您需要通过安装应用程序的每台机器上的代码来完成此操作。请注意,标签v2.0.50727或标签v4.0.30319是机器上安装的 .Net 框架的版本。这意味着您必须在安装版本之前知道(您也可以通过注册表或代码获取)以及您的应用程序是否在其中一个版本中编译。您只能更新您的应用所使用的版本。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

推荐阅读