为 VMM 设置 TLS 1.3

本文介绍如何使用 System Center Virtual Machine Manager (VMM) 服务器设置传输安全层 (TLS) 协议版本 1.3。

注意

Virtual Machine Manager 将使用在操作系统级别配置的协议。 例如,如果在操作系统级别启用了 TLS 1.2 和 TLS 1.3,则 Virtual Machine Manager 将按以下首选项顺序选择两种协议之一:

  1. TLS 版本 1.3
  2. TLS 版本 1.2

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

开始之前

  • 在 VMM 服务器和运行 VMM 数据库的服务器上,安全修补程序应是最新的。
  • VMM 服务器应运行 .NET 4.6 或更高版本。 按照 以下说明 确定安装了哪个版本的 .NET。
  • • TLS 1.3。 需要 TLS 1.2。 要配置。
  • 若要使用 TLS 1.3,System Center 组件会生成 SHA1 或 SHA2 自签名证书。 如果使用证书颁发机构 (CA) 证书中的 SSL 证书,则应使用 SHA1 或 SHA2。

将 VMM 服务器配置为使用 TLS 1.3

禁用 TLS 1.3 和 1.2 之外的所有 SCHANNEL 协议。

手动修改注册表

  1. 打开注册表编辑器并导航到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols。
  2. 右键单击“协议”,选择“新建>密钥”。 输入键,然后按 Enter。 执行此过程以创建以下密钥:
    • SSL3
    • TLS 1.2
    • TLS 1.3
  3. 创建这些密钥后,需要在其中创建 客户端服务器 密钥。
    • 对于 SSL3,请选择“新建>密钥”。 输入 客户端 ,然后按 Enter。 同样,对于 SSL3,请再次选择“新建>密钥”。 然后输入 服务器 ,然后按 Enter
    • 重复该操作,在 TLS 1.2 和 TLS 1.3创建客户端服务器密钥。
  4. 创建 客户端服务器 密钥后,需要在它们下创建 DWORD 值才能启用和禁用协议。 执行此操作,如下所示:
    • 启用 TLS 1.2 协议。 为此,请在 TLS 1.2客户端 密钥下创建 DWORD 值 DisabledByDefault,并将值设置为 0。 现在创建已启用 DWORD 值,并将值设置为 1。 在 服务器 密钥下创建相同的 DWORD 值。
    • 启用 TLS 1.3 协议。 为此,请在 TLS 1.3客户端 密钥下创建 DWORD 值 DisabledByDefault,并将值设置为 0。 现在创建已启用 DWORD 值,并将值设置为 1。 在 服务器 密钥下创建相同的 DWORD 值。
    • 现在禁用其他协议。 为此,请在客户端密钥下的 SSL3TLS 1.2 中创建 DWORD 值 DisabledByDefault,并将值设置为 1。 现在创建已启用 DWORD 值,并将值设置为 0。 在 服务器 密钥下创建相同的 DWORD 值。

使用 PowerShell 脚本修改注册表

可以使用以下 PowerShell 脚本,而不是手动修改注册表值。

$ProtocolList       = @(""SSL 3.0", "TLS 1.2", "TLS 1.3")
$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 if ($Protocol -eq "TLS 1.3")
{
Write-Output " Enabling - TLS 1.3"
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 " "
	}
}

Exit 0

将 VMM 配置为使用 TLS 1.3

  1. 在 VMM 服务器上打开注册表编辑器。 导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ 。NetFramework\v4.0.30319
  2. 创建 DWORD 值 SchUseStrongCrypto 并将值设置为 1。
  3. 然后导航到 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft
    .NetFramework\v4.0.30319
  4. 在此位置下,创建相同的 DWORD 值 SchUseStrongCrypto 并将值设置为 1。
  5. 重启服务器,使设置生效。

使用 PowerShell 脚本修改注册表

可以使用以下 PowerShell 脚本修改注册表设置。

# Tighten up the .NET Framework
$NetRegistryPath = "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319"
New-ItemProperty -Path $NetRegistryPath -Name "SchUseStrongCrypto" -Value "1" -PropertyType DWORD -Force | Out-Null

$NetRegistryPath = "HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319"
New-ItemProperty -Path $NetRegistryPath -Name "SchUseStrongCrypto" -Value "1" -PropertyType DWORD -Force | Out-Null

后续步骤