为 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 将按以下首选项顺序选择两种协议之一:
- TLS 版本 1.3
- 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 协议。
手动修改注册表
- 打开注册表编辑器并导航到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols。
- 右键单击“协议”,选择“新建>密钥”。 输入键,然后按 Enter。 执行此过程以创建以下密钥:
- SSL3
- TLS 1.2
- TLS 1.3
- 创建这些密钥后,需要在其中创建 客户端 和 服务器 密钥。
- 对于 SSL3,请选择“新建>密钥”。 输入 客户端 ,然后按 Enter。 同样,对于 SSL3,请再次选择“新建>密钥”。 然后输入 服务器 ,然后按 Enter。
- 重复该操作,在 TLS 1.2 和 TLS 1.3 下创建客户端和服务器密钥。
- 创建 客户端 和 服务器 密钥后,需要在它们下创建 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 值。
- 现在禁用其他协议。 为此,请在客户端密钥下的 SSL3 和 TLS 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
- 在 VMM 服务器上打开注册表编辑器。 导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ 。NetFramework\v4.0.30319。
- 创建 DWORD 值 SchUseStrongCrypto 并将值设置为 1。
- 然后导航到 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft
.NetFramework\v4.0.30319。 - 在此位置下,创建相同的 DWORD 值 SchUseStrongCrypto 并将值设置为 1。
- 重启服务器,使设置生效。
使用 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