实现传输层安全性 1.2

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

注意

Operations Manager 将使用操作系统级别配置的协议。 例如,如果在操作系统级别启用了 TLS 1.0、TLS 1.1 和 TLS 1.2,则 Operations Manager 将按以下优先顺序选择三个协议之一:

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

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

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

注意

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

  1. 在所有管理服务器和 Web 控制台服务器上安装 SQL Server 2012 Native Client 11.0Microsoft OLE DB 驱动程序 (x64)。
  2. 在所有管理服务器和 Web 控制台服务器上安装 Microsoft ODBC 驱动程序 (x64)。
  3. 安装支持 TLS 1.2 的必需 SQL Server 更新
  4. 在所有组件上安装 SCOM 2016 的最低更新汇总 4。
  5. 确保服务器至少安装了与 OS 兼容的 .NET 4.6: .NET Framework 版本和依赖项
    1. 不要安装 .NET 4.8,因为 SCOM 2016 不兼容存在已知问题。
  6. 将 Windows 配置为仅使用 TLS 1.2。
  7. 将 .NET 配置为默认使用 TLS 1.2。
  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 配置为默认使用 TLS 1.2。
  5. 配置审核收集服务(如果已安装)。

注意

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

有关配置 SQL 连接加密的详细信息,可在此处找到:配置 SQL Server 数据库引擎以加密连接

Operations Manager 生成 SHA1 和 SHA2 自签名证书。 这是启用 TLS 1.2 所必需的。 如果使用 CA 签名证书,请确保证书为 SHA1 或 SHA2。

注意

如果安全策略限制 TLS 1.0 和 1.1,则安装新的 Operations Manager 2016 管理服务器、网关服务器、Web 控制台和 Reporting Services 角色将失败,因为安装媒体不包含支持 TLS 1.2 的更新。 安装这些角色的唯一方法是在系统上启用 TLS 1.0,应用更新汇总 4,然后在系统上启用 TLS 1.2。 此限制不适用于 Operations Manager 版本 1801。

将 Windows 操作系统配置为仅使用 TLS 1.2 协议

使用以下方法之一将 Windows 配置为仅使用 TLS 1.2 协议。

方法 1:手动修改注册表

重要

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

使用以下步骤启用/禁用所有 SCHANNEL 协议系统范围。 建议为所有传入通信和传出通信都启用 TLS 1.2 协议。

注意

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

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

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

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

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

  4. 在“协议”下创建子项,用于:

    1. SSL 2.0
    2. SSL 3.0
    3. TLS 1.0
    4. TLS 1.1
    5. 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. 若要禁用每个协议,请在服务器客户端创建以下 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:自动修改注册表

以管理员身份运行以下 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 " Enabling - TLS 1.2"
    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 配置为仅使用 TLS 1.2

.NET 通常要求应用程序定义用于通信的 TLS 协议,但在 SCOM 实例中,我们需要告知 .NET 系统范围要使用的协议。

完成 Operations Manager 的所有先决条件的配置后,请在所有管理服务器、托管 Web 控制台角色的服务器以及安装代理的任何 Windows 计算机上执行以下步骤。

重要

请认真遵循本部分所述的步骤。 如果注册表修改不正确,可能会发生严重问题。 在进行任何修改之前,请备份注册表进行还原,以防出现问题。

注意

在 Windows OS 2012 上运行的 SCOM 需要其他更改才能通过 HTTP 使用 TLS 1.2 进行 UNIX/LINUX 监视。 若要在 Windows 中的 WinHTTP 中启用 TLS 1.2 作为默认安全协议,需要根据 更新进行以下更改,以便在 Windows 中的 WinHTTP 中启用 TLS 1.1 和 TLS 1.2 作为默认安全协议。

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

手动修改注册表

  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. 重启系统以使设置生效。

自动修改注册表

在管理员模式下运行以下 Windows PowerShell 脚本,以自动配置 .NET Framework 以防止框架继承的 TLS 1.0 依赖项:

# Tighten up the .NET Framework
$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 后为 System Center 2016 - Operations Manager 实现此汇总,请确保导入此汇总中包含的管理包,这些管理包位于以下目录中: \Program Files\Microsoft System Center 2016\Operations Manager\Server\Management Packs for Update Rollups

如果使用 Operations Manager 监视受支持的 Linux 服务器版本,请按照针对你的发行版的相应网站上的说明配置 TLS 1.2。

审核收集服务

对于审核收集服务(ACS),必须在 ACS 收集器服务器上的注册表中进行更改。 ACS 使用 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 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 使用 DSN 连接到数据库。 必须更新 DSN 设置,使其适用于 TLS 1.2。

  1. 使用具有本地管理凭据的帐户登录到服务器。
  2. 通过选择并按住“开始”来启动注册表编辑器,在“运行”文本框中输入 regedit,然后选择“确定”。
  3. 找到 OpsMgrAC 的以下 ODBC 子项: HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\OpsMgrAC

注意

DSN 的默认名称为 OpsMgrAC。

  1. 在 ODBC 数据源子项下,选择 DSN 名称 OpsMgrAC。 这包含要用于数据库连接的 ODBC 驱动程序的名称。 如果已安装 ODBC 17,请将此名称更改为 ODBC Driver 17 for SQL Server
  2. 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
    

后续步骤

  • 有关使用的端口的完整列表、通信方向以及是否可以配置端口,请参阅 为 Operations Manager 配置防火墙。

  • 有关管理组中组件之间的数据保护方式的总体回顾,请参阅 Operations Manager 中的身份验证和数据加密。