管理 AD FS 的 SSL/TLS 协议和密码套件

以下文档提供了有关如何禁用和启用 Active Directory 联合身份验证服务 (AD FS) 使用的某些 TLS/SSL 协议和密码套件的信息。

AD FS 中的 TLS/SSL、Schannel 和密码套件

传输层安全性 (TLS) 协议提供通过网络的加密安全通信。 安全套接字层 (SSL) 协议对 Web 服务器和 Web 浏览器之间传输的敏感数据交换进行加密,类似于 TLS。 Active Directory 联合身份验证服务 (AD FS) 使用这些协议进行通信。 今天,这些协议存在多个版本。

安全通道 (Schannel) 是实现 SSL、TLS 和 DTLS Internet 标准身份验证协议的安全支持提供程序 (SSP)。 安全支持提供程序接口 (SSPI) 是 Windows 系统用于执行安全相关功能(包括身份验证)的 API。 SSPI 用作几个 SSP(包括 Schannel SSP)的通用接口。

密码套件是一组加密算法。 TLS/SSL 协议的 Schannel SSP 实现使用密码套件中的算法来创建密钥和加密信息。 密码套件为以下每种任务指定一种算法:

  • 密钥交换
  • 批量加密
  • 消息验证

AD FS 使用 Schannel.dll 执行其安全通信交互。 目前,AD FS 支持 Schannel.dll 支持的所有协议和密码套件。

管理 TLS/SSL 协议和密码套件

重要

本节包含说明如何修改注册表的步骤。 如果您错误地修改注册表,可能会出现严重问题。 因此,请确保仔细执行这些步骤。

请注意,更改 SCHANNEL 的默认安全设置可能会中断或阻止某些客户端和服务器之间的通信。 如果需要安全通信,并且他们没有协议来协商通信,则会发生这种情况。

如果要应用这些更改,则必须将它们应用于场中的所有 AD FS 服务器。 应用这些更改后,需要重新启动。

在当今时代,强化服务器并删除较旧或较弱的密码套件正在成为许多组织的主要优先事项。 软件套件可用于测试您的服务器并提供有关这些协议和套件的详细信息。 为了保持合规性或获得安全评级,删除或禁用较弱的协议或密码套件已成为必须的。 本文档的其余部分提供了有关如何启用或禁用某些协议和密码套件的指导。

以下注册表项位于同一位置: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols. 使用注册表编辑器或 PowerShell 启用或禁用这些协议和密码套件。

注册表编辑器的屏幕截图,其中显示了位于 Protocols 文件夹中的注册表项。

启用和禁用 SSL 3.0

使用以下注册表项及其值来启用和禁用 SSL 3.0。

启用 SSL 3.0

路径 值名称 数值数据
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\服务器 已启用 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\服务器 默认禁用 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\客户端 已启用 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\客户端 默认禁用 00000000

禁用 SSL 3.0

路径 值名称 数值数据
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\服务器 已启用 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\服务器 默认禁用 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\客户端 已启用 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\客户端 默认禁用 00000001

使用 PowerShell 禁用 SSL 3.0

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null

Write-Host 'SSL 3.0 has been disabled.'

启用和禁用 TLS 1.0

使用以下注册表项及其值来启用和禁用 TLS 1.0。

重要

禁用 TLS 1.0 会破坏 WAP 到 AD FS 的信任。 如果禁用 TLS 1.0,则应为应用程序启用强身份验证。 有关详细信息,请参阅 为 .NET 应用程序启用强身份验证

启用 TLS 1.0

路径 值名称 数值数据
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\服务器 已启用 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\服务器 默认禁用 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\客户端 已启用 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\客户端 默认禁用 00000000

禁用 TLS 1.0

路径 值名称 数值数据
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\服务器 已启用“=00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\服务器 默认禁用 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\客户端 已启用 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\客户端 默认禁用 00000001

使用 PowerShell 禁用 TLS 1.0

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null

Write-Host 'TLS 1.0 has been disabled.'

启用和禁用 TLS 1.1

使用以下注册表项及其值来启用和禁用 TLS 1.1。

启用 TLS 1.1

路径 值名称 数值数据
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server 已启用 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server 默认禁用 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\客户端 已启用 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\客户端 默认禁用 00000000

禁用 TLS 1.1

路径 值名称 数值数据
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server 已启用 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server 默认禁用 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\客户端 已启用 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\客户端 默认禁用 00000001

使用 PowerShell 禁用 TLS 1.1

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null

Write-Host 'TLS 1.1 has been disabled.'

禁用 TLS 1.2

从 Windows Server 2012 开始,TLS 1.2 默认启用。 您可以使用以下注册表项及其值来禁用 TLS 1.2。

注释

不建议禁用 TLS 1.2。

路径 值名称 数值数据
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\服务器 已启用 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\服务器 默认禁用 00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\客户端 已启用 00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\客户端 默认禁用 00000001

使用 PowerShell 禁用 TLS 1.2

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null

Write-Host 'TLS 1.2 has been disabled.'

启用或禁用哈希、密码和密码套件

不支持通过注册表控制密码、哈希和密钥交换算法,但 密钥大小除外。 哈希、密码和密钥交换算法通过 PowerShell、MDM 或 Cipher Suite 排序进行控制。

有关支持的密码套件的完整列表,请参阅 TLS/SSL 中的密码套件 (Schannel SSP)。 本文提供了一个默认启用的套件表,其中显示了哪些套件受支持但默认情况下未启用。 要确定密码套件的优先级,请参阅 确定 Schannel 密码套件的优先级

为 .NET 应用程序启用强身份验证

.NET Framework 3.5/4.0/4.5.x 应用程序可以通过启用 SchUseStrongCrypto 注册表项将默认协议切换到 TLS 1.2。 这些注册表项强制 .NET 应用程序使用 TLS 1.2。

重要

对于 Windows Server 2016 和 Windows Server 2012 R2 上的 AD FS,您需要使用 .NET Framework 4.0/4.5.x 密钥:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319

对于 .NET Framework 3.5,请使用以下注册表项:

路径 值名称 数值数据
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727 SchUseStrongCrypto 00000001

对于 .NET Framework 4.0/4.5.x,请使用以下注册表项:

路径 值名称 数值数据
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 SchUseStrongCrypto 00000001

突出显示 SchUseStrongCrypto 密钥的注册表编辑器屏幕截图

New-ItemProperty -path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -name 'SchUseStrongCrypto' -value '1' -PropertyType 'DWord' -Force | Out-Null

其他信息