如何在客户端上启用 TLS 1.2

适用于:Configuration Manager (Current Branch)

为Configuration Manager环境启用 TLS 1.2 时,首先确保客户端能够正常运行并正确配置为使用 TLS 1.2,然后再启用 TLS 1.2 并在站点服务器和远程站点系统上禁用旧协议。 在客户端上启用 TLS 1.2 有三个任务:

  • 更新 Windows 和 WinHTTP
  • 确保在操作系统级别为 SChannel 启用 TLS 1.2 作为协议
  • 更新和配置.NET Framework以支持 TLS 1.2

有关特定Configuration Manager功能和方案的依赖项的详细信息,请参阅关于启用 TLS 1.2

更新 Windows 和 WinHTTP

Windows 8.1、Windows Server 2012 R2、Windows 10、Windows Server 2016 及更高版本的 Windows 本机支持 TLS 1.2,以便通过 WinHTTP 进行客户端与服务器通信。

早期版本的 Windows(例如 Windows 7 或 Windows Server 2012)默认情况下不会使用 WinHTTP 启用 TLS 1.1 或 TLS 1.2 进行安全通信。 对于这些早期版本的 Windows,请安装 Update 3140245 以启用下面的注册表值,可以将其设置为将 TLS 1.1 和 TLS 1.2 添加到 WinHTTP 的默认安全协议列表。 安装修补程序后,创建以下注册表值:

重要

在启用 TLS 1.2 并在Configuration Manager服务器上禁用旧协议之前,在运行早期版本的 Windows 的所有客户端上启用这些设置。 否则,可能会无意中孤立它们。

验证注册表设置的值 DefaultSecureProtocols ,例如:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp\
      DefaultSecureProtocols = (DWORD): 0xAA0
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp\
      DefaultSecureProtocols = (DWORD): 0xAA0

如果更改此值,请重新启动计算机。

上面的示例显示了 WinHTTP DefaultSecureProtocols 设置的 的值0xAA0更新以在 Windows 中的 WinHTTP 中启用 TLS 1.1 和 TLS 1.2 作为默认安全协议 ,其中列出了每个协议的十六进制值。 默认情况下,在 Windows 中,此值用于 0x0A0 为 WinHTTP 启用 SSL 3.0 和 TLS 1.0。 上述示例保留这些默认值,并为 WinHTTP 启用 TLS 1.1 和 TLS 1.2。 此配置可确保更改不会中断可能仍依赖于 SSL 3.0 或 TLS 1.0 的任何其他应用程序。 可以使用 的值 0xA00 仅启用 TLS 1.1 和 TLS 1.2。 Configuration Manager支持 Windows 在两台设备之间协商的最安全协议。

如果要完全禁用 SSL 3.0 和 TLS 1.0,请使用 Windows 中的 SChannel 禁用协议设置。 有关详细信息,请参阅 限制在 Schannel.dll中使用某些加密算法和协议

确保在操作系统级别为 SChannel 启用 TLS 1.2 作为协议

在大多数情况下,协议使用控制在三个级别:操作系统级别、框架或平台级别以及应用程序级别。 默认情况下,TLS 1.2 在操作系统级别处于启用状态。 确保 .NET 注册表值设置为启用 TLS 1.2 并验证环境是否在网络上正确利用 TLS 1.2 后,你可能希望编辑 SChannel\Protocols 注册表项以禁用较旧的、安全性较低的协议。 有关禁用 TLS 1.0 和 1.1 的详细信息,请参阅 在 Windows 注册表中配置 Schannel 协议

更新和配置.NET Framework以支持 TLS 1.2

确定 .NET 版本

首先,确定已安装的 .NET 版本。 有关详细信息,请参阅确定所安装的 .NET Framework 版本和 Service Pack 级别

安装l .NET 更新

安装 .NET 更新,以便启用强加密。 某些版本的.NET Framework可能需要更新才能启用强加密。 使用以下准则:

  • NET Framework 4.6.2 及更高版本支持 TLS 1.1 和 TLS 1.2。 确认注册表设置,但无需进行其他更改。

    注意

    从版本 2107 开始,Configuration Manager需要站点服务器、特定站点系统、客户端和控制台Microsoft .NET Framework版本 4.6.2。 如果环境中可能,请安装最新版本的 .NET 版本 4.8。

  • 更新 NET Framework 4.6 和更早版本以支持 TLS 1.1 和 TLS 1.2。 有关详细信息,请参阅 .NET Framework 版本和依赖项

  • 如果在 Windows 8.1、Windows Server 2012 R2 或 Windows Server 2012 上使用 .NET Framework 4.5.1 或 4.5.2,强烈建议安装适用于 .Net Framework 4.5.1 和 4.5.2 的最新安全更新,以确保可以正确启用 TLS 1.2。

    供参考,TLS 1.2 首次引入 .Net Framework 4.5.1 和 4.5.2,并具有以下修补程序汇总:

配置强加密

配置.NET Framework以支持强加密。 将 SchUseStrongCrypto 注册表设置设置为 DWORD:00000001。 此值禁用 RC4 流密码,并需要重启。 有关此设置的详细信息,请参阅Microsoft安全公告296038

确保在与已启用 TLS 1.2 的系统跨网络通信的任何计算机上设置以下注册表项。 例如,Configuration Manager客户端、站点服务器上未安装的远程站点系统角色以及站点服务器本身。

对于在 32 位 OS 上运行的 32 位应用程序和在 64 位 OS 上运行的 64 位应用程序,请更新以下子项值:

[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

对于在 64 位 OS 上运行的 32 位应用程序,请更新以下子项值:

[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

注意

设置 SchUseStrongCrypto 允许 .NET 使用 TLS 1.1 和 TLS 1.2。 设置 SystemDefaultTlsVersions 允许 .NET 使用 OS 配置。 有关详细信息,请参阅使用 .NET Framework 的 TLS 最佳做法

后续步骤