针对 Operations Manager 强制使用 TLS 1.2
本文介绍如何允许 System Center Operations Manager 利用传输层安全性 (TLS) 1.2。
注意
Operations Manager 使用在操作系统级别配置的协议。 例如,如果启用所有协议,Operations Manager 会按以下首选项顺序选择三种协议之一:
- TLS 版本 1.0
- TLS 版本 1.1
- TLS 版本 1.2
Schannel SSP 随后会选择客户端和服务器可以支持的最优先的身份验证协议。
执行以下步骤,在 Operations Manager 中实现 TLS 协议版本 1.2:
注意
Microsoft OLE DB Driver 18 for SQL Server(建议)在 Operations Manager 2016 UR9 及更高版本中受支持。
在所有管理服务器和 Web 控制台服务器上安装 SQL Server 2012 Native Client 11.0 或 Microsoft OLE DB 驱动程序 (x64)。
在所有管理服务器和 Web 控制台服务器上安装 Microsoft ODBC 驱动程序 (x64)。
在所有组件上至少安装 Operations Manager 2016 的更新汇总 4。
确保所有服务器都安装了与 OS 版本兼容的最低 .NET Framework 4.6:.NET Framework 版本和依赖项
- 不要安装 .NET Framework 4.8,因为 Operations Manager 2016 存在已知的不兼容情况。
将 Windows 配置为仅使用 TLS 1.2。
将 .NET Framework 配置为默认使用更高级别的加密。
配置审核收集服务(如果已安装)。
在所有管理服务器和 Web 控制台服务器上安装 Microsoft OLE DB Driver for SQL 版本 18.7.4。
在所有管理服务器和 Web 控制台服务器上安装 Microsoft ODBC Driver for SQL 版本 17.10.6。
将 Windows 配置为仅使用 TLS 1.2。
将 .NET Framework 配置为默认使用更高级别的加密。
配置审核收集服务(如果已安装)。
备注
如果使用 SQL Server 连接加密,请改为安装以下驱动程序版本:
- Microsoft OLE DB 驱动程序 19: https://aka.ms/downloadmsoledbsql
- Microsoft ODBC 驱动程序 18: https://aka.ms/downloadmsodbcsql
有关配置 SQL 连接加密的详细信息,可在此处找到:配置 SQL Server 数据库引擎以加密连接
Operations Manager 生成 SHA1 和 SHA2 自签名证书,这是启用 TLS 1.2 所必需的。 如果使用 CA 签名证书,请确保证书为 SHA1 或 SHA2。
注意
如果安全策略限制 TLS 1.0 和 1.1,则安装新的 Operations Manager 2016 角色失败,因为安装媒体不包括支持 TLS 1.2 的更新。 若要继续设置新角色,请在系统上启用 TLS 1.0,请应用 更新汇总 4,然后在系统上重新设置 TLS 1.0。
将 Windows 操作系统配置为仅使用 TLS 1.2 协议
使用以下方法之一将 Windows 配置为仅使用 TLS 1.2 协议。
方法 1:手动修改注册表
使用以下步骤修改 SChannel 协议系统范围。 建议显式启用 TLS 1.2 协议。
注意
进行这些注册表更改不会影响 Kerberos 或 NTLM 协议的使用。
使用具有本地管理凭据的帐户登录到服务器。
通过选择并按住“开始”来启动注册表编辑器,在“运行”文本框中输入 regedit,然后选择“确定”。
找到以下注册表子项:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
在Protocols下创建子项,用于:
- SSL 2.0
- SSL 3.0
- TLS 1.0
- TLS 1.1
- TLS 1.2
在前面创建的每个协议版本子项下创建 客户端 和 服务器 子项。 例如,TLS 1.0 的子项将是
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server
若要 禁用 协议,请在 Server 和 客户端下创建以下 DWORD 值:
- Enabled [Value = 0]
- DisabledByDefault [值 = 1]
若要显式 启用 TLS 1.2 协议(默认已启用),请创建以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server
然后在服务器和客户端下创建以下 DWORD 值:
- Enabled [值 = 1]
- DisabledByDefault [值 = 0]
关闭“注册表编辑器”。
方法 2:使用 PowerShell 修改注册表
以管理员身份运行以下 Windows PowerShell 脚本,将 Windows作系统配置为使用 TLS 1.2 协议:
$ProtocolList = @("SSL 2.0", "SSL 3.0", "TLS 1.0", "TLS 1.1", "TLS 1.2")
$ProtocolSubKeyList = @("Client", "Server")
$DisabledByDefault = "DisabledByDefault"
$registryPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\"
foreach ($Protocol in $ProtocolList)
{
foreach ($key in $ProtocolSubKeyList)
{
$currentRegPath = $registryPath + $Protocol + "\" + $key
Write-Output "Current Registry Path: `"$currentRegPath`""
if (!(Test-Path $currentRegPath))
{
Write-Output " `'$key`' not found: Creating new Registry Key"
New-Item -Path $currentRegPath -Force | out-Null
}
if ($Protocol -eq "TLS 1.2")
{
Write-Output " Explicitly enable TLS 1.2 (default is enabled)"
New-ItemProperty -Path $currentRegPath -Name $DisabledByDefault -Value "0" -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $currentRegPath -Name 'Enabled' -Value "1" -PropertyType DWORD -Force | Out-Null
}
else
{
Write-Output " Disabling - $Protocol"
New-ItemProperty -Path $currentRegPath -Name $DisabledByDefault -Value "1" -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $currentRegPath -Name 'Enabled' -Value "0" -PropertyType DWORD -Force | Out-Null
}
Write-Output " "
}
将 .NET Framework 配置为使用更高级别的加密
.NET Framework 通常需要应用程序定义用于通信的 TLS 协议。 但是,在 Operations Manager 实例中,我们需要告知 .NET Framework 系统范围内要使用的协议。
完成 Operations Manager 的所有先决条件的配置后,请在所有 Operations Manager 服务器和任何 Windows 代理上执行以下步骤。
Windows Server 2012/2012 R2 的先决条件
要在 Windows Server 2012/2012 R2 上通过 HTTP 使用 TLS 1.2 进行 UNIX/LINUX 监视,必须进行额外的更改。 若要允许/启用 TLS 1.2 作为 Windows 中 WinHTTP 的默认安全协议,需要根据 更新进行以下更改,以在 Windows的 WinHTTP 中启用 TLS 1.1 和 TLS 1.2 作为默认安全协议。
方法 1:手动修改注册表
- 打开“注册表编辑器”
- 找到以下注册表子项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727
- 创建以下 DWORD 值对:
- SchUseStrongCrypto [值 = 1]
- SystemDefaultTlsVersions [Value = 1]
- 创建以下 DWORD 值对:
- 找到以下注册表子项:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727
- 创建以下 DWORD 值对:
- SchUseStrongCrypto [值 = 1]
- SystemDefaultTlsVersions [Value = 1]
- 创建以下 DWORD 值对:
- 找到以下注册表子项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
- 创建以下 DWORD 值对:
- SchUseStrongCrypto [值 = 1]
- SystemDefaultTlsVersions [Value = 1]
- 创建以下 DWORD 值对:
- 找到以下注册表子项:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319
- 创建以下 DWORD 值对:
- SchUseStrongCrypto [值 = 1]
- SystemDefaultTlsVersions [Value = 1]
- 创建以下 DWORD 值对:
- 重启系统以使设置生效。
方法 2:使用 PowerShell 修改注册表
在管理员模式下运行以下 Windows PowerShell 脚本,以自动配置 .NET Framework 以防止框架继承的 TLS 1.0 依赖项:
# Allow .NET Framework to use higher levels of Cryptography
$NetRegistryPath1 = "HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727"
New-ItemProperty -Path $NetRegistryPath1 -Name "SchUseStrongCrypto" -Value "1" -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $NetRegistryPath1 -Name "SystemDefaultTlsVersions" -Value "1" -PropertyType DWORD -Force | Out-Null
$NetRegistryPath2 = "HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319"
New-ItemProperty -Path $NetRegistryPath2 -Name "SchUseStrongCrypto" -Value "1" -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $NetRegistryPath2 -Name "SystemDefaultTlsVersions" -Value "1" -PropertyType DWORD -Force | Out-Null
$NetRegistryPath3 = "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727"
New-ItemProperty -Path $NetRegistryPath3 -Name "SchUseStrongCrypto" -Value "1" -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $NetRegistryPath3 -Name "SystemDefaultTlsVersions" -Value "1" -PropertyType DWORD -Force | Out-Null
$NetRegistryPath4 = "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319"
New-ItemProperty -Path $NetRegistryPath4 -Name "SchUseStrongCrypto" -Value "1" -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $NetRegistryPath4 -Name "SystemDefaultTlsVersions" -Value "1" -PropertyType DWORD -Force | Out-Null
其他设置
应用更新汇总 4 后,请确保导入此汇总中包含的管理包,这些管理包位于以下目录中:%ProgramFiles%\Microsoft System Center 2016\Operations Manager\Server\Management Packs for Update Rollups
。
如果使用 Operations Manager 监视受支持的 Linux 服务器版本,请按照发行版相应网站上的说明配置 TLS 1.2。
审计数据收集服务
对于审核收集服务(ACS),必须在 ACS 收集器服务器上的注册表中进行其他更改。 ACS 使用 ODBC 数据源名称(DSN)连接到数据库。 确保更新 DSN 设置,使其适用于 TLS 1.2。
- 使用具有本地管理凭据的帐户登录到服务器。
- 通过选择并按住“开始”来启动注册表编辑器,在“运行”文本框中输入 regedit,然后选择“确定”。
- 找到 OpsMgrAC 的以下 ODBC 子项:
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\OpsMgrAC
。-
请注意,默认 DSN 名称
OpsMgrAC
。
-
请注意,默认 DSN 名称
- 在 ODBC 数据源 子项下,选择 DSN 名称 OpsMgrAC。 这包含要用于数据库连接的 ODBC 驱动程序的名称。 如果安装了 ODBC 11.0,请将此名称更改为 ODBC Driver 11 for SQL Server,或者如果安装了 ODBC 13.0,请将此名称更改为 ODBC Driver 13 for SQL Server。
- 在 OpsMgrAC 子项下,更新 已安装的 ODBC 版本的驱动程序 。
- 如果安装了 ODBC 11.0,请将驱动程序条目更改为
%WINDIR%\system32\msodbcsql11.dll
。 - 如果安装了 ODBC 13.0,请将驱动程序条目更改为
%WINDIR%\system32\msodbcsql13.dll
。 - 如果安装了 ODBC 17.0,请将驱动程序条目更改为
%WINDIR%\system32\msodbcsql17.dll
。 - 如果安装了 ODBC 18.0,请将驱动程序条目更改为
%WINDIR%\system32\msodbcsql18.dll
。
- 如果安装了 ODBC 11.0,请将驱动程序条目更改为
注册表文件
或者,在记事本或其他文本编辑器中创建并保存以下 .reg 文件。 若要运行保存 .reg 文件,请双击该文件。
对于 ODBC 11.0、13.0、17.x 或 18.x。 请创建以下文件 ODBC.reg,并将其中的版本号替换为正在使用的 ODBC 版本。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources] "OpsMgrAC"="ODBC Driver 18 for SQL Server" [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\OpsMgrAC] "Driver"="%WINDIR%\system32\msodbcsql18.dll"
PowerShell
或者,运行以下 PowerShell 命令来自动执行更改。
对于 ODBC 11.0,请运行以下 PowerShell 命令:
New-ItemProperty -Path "HKLM:\SOFTWARE\ODBC\ODBC.INI\OpsMgrAC" -Name "Driver" -Value "%WINDIR%\system32\msodbcsql11.dll" -PropertyType STRING -Force | Out-Null New-ItemProperty -Path "HKLM:\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources" -Name "OpsMgrAC" -Value "ODBC Driver 11 for SQL Server" -PropertyType STRING -Force | Out-Null
对于 ODBC 13.0,请运行以下 PowerShell 命令:
New-ItemProperty -Path "HKLM:\SOFTWARE\ODBC\ODBC.INI\OpsMgrAC" -Name "Driver" -Value "%WINDIR%\system32\msodbcsql13.dll" -PropertyType STRING -Force | Out-Null New-ItemProperty -Path "HKLM:\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources" -Name "OpsMgrAC" -Value "ODBC Driver 13 for SQL Server" -PropertyType STRING -Force | Out-Null
审核收集服务
对于审核收集服务(ACS),必须在 ACS 收集器服务器上的注册表中进行其他更改。 ACS 使用 ODBC 数据源名称(DSN)连接到数据库。 确保更新 DSN 设置,使其适用于 TLS 1.2。
使用具有本地管理凭据的帐户登录到服务器。
通过选择并按住“开始”来启动注册表编辑器,在“运行”文本框中输入 regedit,然后选择“确定”。
找到 OpsMgrAC 的以下 ODBC 子项:
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\OpsMgrAC
。注意
DSN 的默认名称为 OpsMgrAC。
在 ODBC 数据源子项下,选择 DSN 名称 OpsMgrAC。 这包含要用于数据库连接的 ODBC 驱动程序的名称。 如果安装了 ODBC 17,请将此名称更改为 ODBC Driver 17 for SQL Server。
在 OpsMgrAC 子项下,更新 已安装的 ODBC 版本的驱动程序 。
- 例如,如果安装了 ODBC 17,请将驱动程序条目更改为
%WINDIR%\system32\msodbcsql17.dll
。 - 检查安装 ODBC 驱动程序的当前版本的 DLL 的名称(如果不同)。
- 例如,如果安装了 ODBC 17,请将驱动程序条目更改为
注册表文件
或者,在记事本或其他文本编辑器中创建并保存以下 .reg 文件。 若要运行保存 .reg 文件,请双击该文件。
对于 ODBC 17,请创建以下 ODBC 17.reg文件:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources] "OpsMgrAC"="ODBC Driver 17 for SQL Server" [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\OpsMgrAC] "Driver"="%WINDIR%\system32\msodbcsql17.dll"
PowerShell
或者,运行以下 PowerShell 命令来自动执行更改。
如果使用非 17 的 ODBC 驱动程序版本,请确保将 dll 文件路径替换为相应的版本。
New-ItemProperty -Path "HKLM:\SOFTWARE\ODBC\ODBC.INI\OpsMgrAC" -Name "Driver" -Value "%WINDIR%\system32\msodbcsql7.dll" -PropertyType STRING -Force | Out-Null New-ItemProperty -Path "HKLM:\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources" -Name "OpsMgrAC" -Value "ODBC Driver 17 for SQL Server" -PropertyType STRING -Force | Out-Null
后续步骤
- 有关安全工程团队的 TLS 1.0 的详细信息,请参阅 解决 TLS 1.0 问题。
- 有关使用的端口的完整列表、通信方向以及是否可以配置端口,请参阅 为 Operations Manager 配置防火墙。
- 有关管理组中组件之间的数据保护方式的总体回顾,请参阅 Operations Manager 中的身份验证和数据加密。