当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何在 Windows 上启用 TLS 1.2

作者:精品下载站 日期:2024-12-14 23:38:19 浏览:14 分类:玩电脑

如何在 Windows 上启用 TLS 1.2


在本文中,我们将了解如何在不同的 Windows 版本上启用传输层安全性 (TLS 1.2) 协议,包括 .Net 和 WinHTTP 应用程序的情况。 TLS 1.0 和 TLS 1.1 是已弃用的协议版本。如果您已将所有服务迁移到 TLS 1.2 或 TLS 1.3,则可以在 Windows 服务器和客户端上禁用对旧版 TLS 版本的支持(如何使用 GPO 禁用 TLS 1.0 和 TLS 1.1)。但是,在执行此操作之前,请确保所有客户端都支持 TLS 1.2。

在现代 Windows 版本(Windows 11/10/8.1 或 Windows Server 2022/2019/2016/2012R2)中,默认启用 TLS 1.2。在以前的 Windows 版本(Windows 7、Windows Server 2008R2/2012)中,您必须先配置一些设置,然后才能启用 TLS 1.2。

Windows XP 和 Vista 不支持 TLS 1.2。

例如,要在 Windows 7 和 Windows Server 2008 R2 中启用 TLS 1.2:

  1. 确保已安装 Windows 7 Service Pack 1;

  2. 从 Microsoft 更新目录 (https://www.catalog.update.microsoft.com/search.aspx?q=kb3140245) 下载并手动安装 MSU 更新 KB3140245

    [玩转系统] 如何在 Windows 上启用 TLS 1.2

  3. 然后下载并安装MicrosoftEasyFix51044.msi(该补丁添加了允许在Windows 7/2008R2/2012上启用TLS 1.2支持的注册表选项);

    如果没有这些更新,Windows 7 上的 Outlook 将无法连接到现代电子邮件服务器,并出现错误:0x800CCC1A - 您的服务器不支持您指定的连接加密类型。此外,如果您打开某些网站,您可能会看到 SSL 错误 此网站无法提供安全连接。

  4. 重启你的电脑。

这些注册表选项在文章更新以在 Windows 中的 WinHTTP 中启用 TLS 1.1 和 TLS 1.2 作为默认安全协议(https://support.microsoft.com/en-us/topic/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-winhttp-in-windows-c4bd73d2-31d7-761e-017 8-11268bb10392)。

以下 REG_DWORD 注册表项将出现在您的计算机上

HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client\

HKLM\...Protocols\TLS 1.2\Servers
  • DisabledByDefault = 0
  • Enabled = 1

为了默认对 WinHttp API 应用程序使用 TLS 1.2,请添加

DefaultSecureProtocols = 0x00000A00

REG_DWORD 参数

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp

(在 Windows x64 上:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp

)。

以下是 DefaultSecureProtocols 选项的可能值,该选项定义了 WinHTTP 连接允许的协议:

  • 0x00000A0 - 默认值仅允许 WinHTTP 使用 SSL 3.0 和 TLS 1.0

  • 0x0000AA0 — 除了 SSL 3.0 和 TLS 1.0 之外,还允许使用 TLS 1.1 和 TLS 1.2

  • 0x00000A00 - 仅允许 TLS 1.1 和 TLS 1.2

  • 0x00000800 - 仅允许 TLS 1.2

从 Windows 10 和 Windows Server 2016 开始,所有 Windows 版本都支持 WinHTTP 的 TLS 1.2。

您可以使用以下 PowerShell 脚本来创建这些注册表参数:

$reg32bWinHttp = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp"
$reg64bWinHttp = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp"
$regWinHttpDefault = "DefaultSecureProtocols"
$regWinHttpValue = "0x00000800"
$regTLS12Client = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client"
$regTLS12Server = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server"
$regTLSDefault = "DisabledByDefault"
$regTLSValue = "0x00000000"
$regTLSEnabled = "Enabled"
$regTLSEnableValue = "0x00000001"
# for Windows x86
New-ItemProperty -Path $reg32bWinHttp -Name $regWinHttpDefault -Value $regWinHttpValue -PropertyType DWORD
# for Windows x64
New-ItemProperty -Path $reg64bWinHttp -Name $regWinHttpDefault -Value $regWinHttpValue -PropertyType DWORD
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2”
New-Item -Path $regTLS12Client
New-Item -Path $regTLS12Server
New-ItemProperty -Path $regTLS12Client -Name $regTLSDefault -Value $regTLSValue -PropertyType DWORD
New-ItemProperty -Path $regTLS12Client -Name $regTLSEnabled -Value $regTLSEnableValue -PropertyType DWORD
New-ItemProperty -Path $regTLS12Server -Name $regTLSDefault -Value $regTLSValue -PropertyType DWORD
New-ItemProperty -Path $regTLS12Server -Name $regTLSEnabled -Value $regTLSEnableValue -PropertyType DWORD

使用以下命令重新启动计算机:

Restart-Computer

[玩转系统] 如何在 Windows 上启用 TLS 1.2

然后,您必须为 .NET Framework 应用程序启用 TLS 1.2 支持。为此,您需要在注册表中启用 .NET 3.5 和 4.x 应用程序的系统加密协议。如果您使用旧的 NET Framework 版本,例如 Windows Server 2012 R2/2012 或 Windows 8.1 上的 4.5.1 或 4.5.2,请首先安装 .Net Framework 4.5.1 的最新更新(它们将为 .NET 添加 TLS 1.2 支持)。

在下面找到要为不同 .Net 版本配置的注册表选项:

对于 .Net 3.5 或 2.0:

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

对于.Net 4.х:

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

对于.Net 4.6:

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

例如,如果没有这些选项,您将无法从 Windows Server 2012 R2 上的 PowerShell 控制台连接到 PSGallery 存储库,并出现以下错误:

  • 安装模块:无法从 URI 下载

  • 无法解析包源

问题是默认情况下 PowerShell 尝试使用 TLS 1.0 连接到 PSGallery。截至 2020 年 4 月,PowerShell 库仅接受 TLS 1.2 连接

此外,还有一个免费的 IISCrypto 工具,允许通过 GUI 启用/禁用各种 TLS/SSL 版本和 Schannel 设置 (https://www.nartac.com/Products/IISCrypto/)。您可以在此处选择要启用的 TLS 版本。如果 Schannel 协议旁边的所有复选框均处于非活动状态(灰显),则 Windows 正在使用默认设置。在我的示例中,我使用上面所示的 PowerShell 脚本为服务器和客户端启用了 TLS 1.2。 IISCrypto 现在显示 TLS 1.2 已手动启用。

IISCrypto 不允许更改 .NET 或 WinHTTP 的 TLS 设置。

[玩转系统] 如何在 Windows 上启用 TLS 1.2

在 Windows Server 2022 上,必须启用 TLS 1.3 才能支持 IIS 网站的 HTTP/3。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯