我想在 Windows Server 2012 中禁用 RC4。从此链接,我应该禁用注册表项或 RC*
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC*]
但我找不到任何东西
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\
任何想法?
另外,我还检查了安全更新编号 2868725,尽管它是最新的,但在 Windows 更新历史记录中却找不到它。
答案1
在 Server 2012 R2 中,RC4 默认不被禁用。它只内置了“限制使用 RC4 的功能”。您必须自行设置所需的注册表项:
通过在以下注册表位置将“Enabled”(REG_DWORD)条目设置为值 00000000,可以在 Windows 平台上完全禁用 RC4 密码:• HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128 • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128 • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128
答案2
由于您使用的是 Windows Server 2012 R2 RC4,因此默认情况下是禁用的。
引用:
此更新是否适用于 Windows 8.1、Windows Server 2012 R2 或 Windows RT 8.1?
否。此更新不适用于 Windows 8.1、Windows Server 2012 R2 或 Windows RT 8.1,因为这些操作系统已包含限制使用 RC4 的功能。
答案3
对于任何想要使用 powershell 执行此操作的人来说,由于键名称中有正斜杠,因此它比其他注册表项更棘手。我使用了以下代码片段来使其工作:
$schannel = Get-Item HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
$ciphers = $schannel.OpenSubKey('Ciphers', $true)
$key = $ciphers.CreateSubKey('RC4 40/128')
$key.SetValue('Enabled', 0x0)
$key = $ciphers.CreateSubKey('RC4 56/128')
$key.SetValue('Enabled', 0x0)
$key = $ciphers.CreateSubKey('RC4 128/128')
$key.SetValue('Enabled', 0x0)
需要注意的一点是,您必须将 $ciphers 作为子项打开,并将第二个参数设置为 true,以便您能够真正写入它。Get-Item 似乎返回只读副本,除非您有可写的密钥对象,否则 CreateSubKey 将失败。有关子项中的路径元素的更多讨论这里。