针对 Operations Manager 强制使用 TLS 1.2

本文介绍如何允许 System Center Operations Manager 利用传输层安全性 (TLS) 1.2。

注意

Operations Manager 使用在操作系统级别配置的协议。 例如,如果启用所有协议,Operations Manager 会按以下首选项顺序选择三种协议之一:

  1. TLS 版本 1.0
  2. TLS 版本 1.1
  3. TLS 版本 1.2

Schannel SSP 随后会选择客户端和服务器可以支持的最优先的身份验证协议。

执行以下步骤,在 Operations Manager 中实现 TLS 协议版本 1.2:

注意

Microsoft OLE DB Driver 18 for SQL Server(建议)在 Operations Manager 2016 UR9 及更高版本中受支持。

  1. 在所有管理服务器和 Web 控制台服务器上安装 SQL Server 2012 Native Client 11.0Microsoft OLE DB 驱动程序 (x64)。

  2. 在所有管理服务器和 Web 控制台服务器上安装 Microsoft ODBC 驱动程序 (x64)。

  3. 安装支持 TLS 1.2 的必需 SQL Server 更新

  4. 在所有组件上至少安装 Operations Manager 2016 的更新汇总 4。

  5. 确保所有服务器都安装了与 OS 版本兼容的最低 .NET Framework 4.6:.NET Framework 版本和依赖项

    1. 不要安装 .NET Framework 4.8,因为 Operations Manager 2016 存在已知的不兼容情况。
  6. 将 Windows 配置为仅使用 TLS 1.2。

  7. 将 .NET Framework 配置为默认使用更高级别的加密。

  8. 配置审核收集服务(如果已安装)。

  1. 在所有管理服务器和 Web 控制台服务器上安装 Microsoft OLE DB Driver for SQL 版本 18.7.4。

  2. 在所有管理服务器和 Web 控制台服务器上安装 Microsoft ODBC Driver for SQL 版本 17.10.6。

  3. 将 Windows 配置为仅使用 TLS 1.2。

  4. 将 .NET Framework 配置为默认使用更高级别的加密。

  5. 配置审核收集服务(如果已安装)。

备注

如果使用 SQL Server 连接加密,请改为安装以下驱动程序版本:

有关配置 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:手动修改注册表

重要

请认真遵循本部分所述的步骤。 如果注册表修改不正确,则可能会出现严重问题。 在进行更改之前,在出现问题时备份注册表。

有关详细信息,请参阅:如何在 Windows 中备份和还原注册表

使用以下步骤修改 SChannel 协议系统范围。 建议显式启用 TLS 1.2 协议。

注意

进行这些注册表更改不会影响 Kerberos 或 NTLM 协议的使用。

  1. 使用具有本地管理凭据的帐户登录到服务器。

  2. 通过选择并按住“开始”来启动注册表编辑器,在“运行”文本框中输入 regedit,然后选择“确定”。

  3. 找到以下注册表子项:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

  4. Protocols下创建子项,用于:

    • SSL 2.0
    • SSL 3.0
    • TLS 1.0
    • TLS 1.1
    • TLS 1.2
  5. 在前面创建的每个协议版本子项下创建 客户端服务器 子项。 例如,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
  6. 若要 禁用 协议,请在 Server客户端下创建以下 DWORD 值:

    • Enabled [Value = 0]
    • DisabledByDefault [值 = 1]
  7. 若要显式 启用 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
  8. 然后在服务器客户端创建以下 DWORD 值:

    • Enabled [值 = 1]
    • DisabledByDefault [值 = 0]
  9. 关闭“注册表编辑器”。

方法 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 中备份和还原注册表

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. 在 UNIX/LINUX 资源池中的管理服务器/网关服务器上安装 KB3140245
  2. 备份那些按照知识库文章中所述修改的注册表。
  3. 在 UNIX/LINUX 资源池中的管理服务器/网关上下载并运行 简易修复 工具。
  4. 重新启动服务器。

方法 1:手动修改注册表

  1. 打开“注册表编辑器”
  2. 找到以下注册表子项: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727
    1. 创建以下 DWORD 值对:
      • SchUseStrongCrypto [值 = 1]
      • SystemDefaultTlsVersions [Value = 1]
  3. 找到以下注册表子项: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727
    1. 创建以下 DWORD 值对:
      • SchUseStrongCrypto [值 = 1]
      • SystemDefaultTlsVersions [Value = 1]
  4. 找到以下注册表子项: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
    1. 创建以下 DWORD 值对:
      • SchUseStrongCrypto [值 = 1]
      • SystemDefaultTlsVersions [Value = 1]
  5. 找到以下注册表子项: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319
    1. 创建以下 DWORD 值对:
      • SchUseStrongCrypto [值 = 1]
      • SystemDefaultTlsVersions [Value = 1]
  6. 重启系统以使设置生效。

方法 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。

  1. 使用具有本地管理凭据的帐户登录到服务器。
  2. 通过选择并按住“开始”来启动注册表编辑器,在“运行”文本框中输入 regedit,然后选择“确定”。
  3. 找到 OpsMgrAC 的以下 ODBC 子项: HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\OpsMgrAC
    1. 请注意,默认 DSN 名称 OpsMgrAC
  4. ODBC 数据源 子项下,选择 DSN 名称 OpsMgrAC。 这包含要用于数据库连接的 ODBC 驱动程序的名称。 如果安装了 ODBC 11.0,请将此名称更改为 ODBC Driver 11 for SQL Server,或者如果安装了 ODBC 13.0,请将此名称更改为 ODBC Driver 13 for SQL Server
  5. 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

注册表文件

或者,在记事本或其他文本编辑器中创建并保存以下 .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。

  1. 使用具有本地管理凭据的帐户登录到服务器。

  2. 通过选择并按住“开始”来启动注册表编辑器,在“运行”文本框中输入 regedit,然后选择“确定”。

  3. 找到 OpsMgrAC 的以下 ODBC 子项: HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\OpsMgrAC

    注意

    DSN 的默认名称为 OpsMgrAC。

  4. 在 ODBC 数据源子项下,选择 DSN 名称 OpsMgrAC。 这包含要用于数据库连接的 ODBC 驱动程序的名称。 如果安装了 ODBC 17,请将此名称更改为 ODBC Driver 17 for SQL Server

  5. OpsMgrAC 子项下,更新 已安装的 ODBC 版本的驱动程序

    • 例如,如果安装了 ODBC 17,请将驱动程序条目更改为 %WINDIR%\system32\msodbcsql17.dll
    • 检查安装 ODBC 驱动程序的当前版本的 DLL 的名称(如果不同)。

注册表文件

或者,在记事本或其他文本编辑器中创建并保存以下 .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 中的身份验证和数据加密。