如何在 Azure Web 角色上禁用 RC4 密码

How to disable RC4 cipher on Azure Web Roles

我有一个托管在 Microsoft Azure Web-Role 上的 Web 应用程序。 如何禁用 RC4 密码?

1 月发布后,PaaS Guest OS 映像中禁用了 SSL 3.0。有关详细信息,请参阅 http://azure.microsoft.com/en-us/documentation/articles/cloud-services-guestos-update-matrix/

为什么您认为 SSL 3.0 仍然启用?

我在使用 Powershell 脚本时遇到的问题是需要修改的键包含正斜杠,Powershell 将其视为路径分隔符,因此脚本失败。

解决方案是创建一个控制台应用程序并在启动时将其设置为 运行:

class Program
{
    static void Main(string[] args)
    {
        string[] subKeys = new string[]
        {
            "RC4 40/128",
            "RC4 56/128",
            "RC4 64/128",
            "RC4 128/128",
        };

        RegistryKey parentKey = Registry.LocalMachine.OpenSubKey(
            @"SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", true);

        foreach (string keyName in subKeys)
        {
            var newKey = parentKey.CreateSubKey(keyName);
            newKey.SetValue("Enabled", 0);
            newKey.Close();
        }
        parentKey.Close();
    }
}

复制输出文件(DisableRc4.exe 在我的例子中)到 webrole 的根目录并设置为 Copy Always

创建一个包含

的文件DisableRc4.cmd
.\DisableRc4.exe
EXIT /B 0

为您的 Web 角色更新 ServiceDefinition.csdef 如下

<Startup>
    <Task commandLine="DisableRc4.cmd" executionContext="elevated" taskType="simple" />
</Startup>

我确认使用 https://www.ssllabs.com/ssltest/index.html

删除了 RC4 支持

修改启动前

之后

我看到我们中很少有人讨论 Powershell 和在脚本中使用前向“/”的问题,但下面解决了这个问题。有效。

([Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine,$env:COMPUTERNAME)).CreateSubKey('SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128') 

上周有一个博客 post 更新,它将在云服务上默认禁用 RC4 密码。 https://azure.microsoft.com/en-us/blog/azure-services-ssl-tls-cipher-suite-update-and-removal-of-rc4/

这个更新应该会在这个月推出,如果操作系统版本配置为自动,它将自动安装在云服务上(见下图)

下一位嘉宾OS:WA-GUEST-OS-4.31_201604-01
发布日期:2016 年 5 月 2 日

Operation system version configuration