【问题标题】:How to disable RC4 cipher on Azure Web Roles如何在 Azure Web 角色上禁用 RC4 密码
【发布时间】:2015-06-28 22:19:19
【问题描述】:

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

【问题讨论】:

标签: azure ssl ssl-certificate azure-web-roles


【解决方案1】:

一月发布后,PaaS 来宾操作系统映像中禁用了 SSL 3.0。请参阅http://azure.microsoft.com/en-us/documentation/articles/cloud-services-guestos-update-matrix/ 了解更多信息。

为什么您认为 SSL 3.0 仍处于启用状态?

【讨论】:

  • 对不起,这是我的错。我想禁用 RC4 密码而不是 SSL 3.0
  • @m.samy 那么你应该更新你的问题,或者关闭这个问题并提出一个新问题。
  • 您可以使用azure.microsoft.com/blog/2014/10/19/… 的脚本来启用或禁用您选择的任何密码套件。
  • 但我仍然没有看到我的网络角色实例默认禁用 rc4 密码套件。
【解决方案2】:

我在使用 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 的根目录并设置为 始终复制

创建一个包含 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 支持

启动前修改

之后

【讨论】:

  • 您的代码和解释非常好,但在我的情况下,读取注册表时出错:“不允许请求的注册表访问”。没发生在你身上?
  • 不,从来没有这个问题。启动中有executionContext="elevated"吗?
  • 我的代码是:&lt;Startup&gt; &lt;Task commandLine="DisableAzureRC4.cmd" executionContext="elevated" taskType="background"&gt;&lt;/Task&gt; &lt;/Startup&gt;(后台还没试过,很简单)
  • 我在 TEST 中成功部署,但没有 SSL。在 PROD 中它不起作用。没有错误,但也没有实际效果。空的 .cmd 不是原因。我必须继续挖掘......
  • 作为启动文件上的标记:“确保使用记事本或其他 ASCII 文本编辑器创建它 [cmd 文件]……在 Visual Studio 中创建的批处理文件似乎在顶部有一个字节顺序标记使它们在执行时失败。”
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    上周有一篇博文更新,默认情况下会在云服务上禁用 RC4 密码。 https://azure.microsoft.com/en-us/blog/azure-services-ssl-tls-cipher-suite-update-and-removal-of-rc4/

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

    下一个访客操作系统:WA-GUEST-OS-4.31_201604-01
    发布日期:2016 年 5 月 2 日

    Operation system version configuration

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多