【问题标题】:How to disable the SSLv3 protocol in Jetty to prevent Poodle Attack如何在 Jetty 中禁用 SSLv3 协议以防止 Poodle 攻击
【发布时间】:2014-10-15 12:23:55
【问题描述】:

是否有任何可用的特定排除列表仅禁用 SSLv3 密码不是 TLSv1/2。

我有 jetty 8,现在不能升级到 9。我当前的 jetty-ssl.xml 如下所示

<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Call name="addConnector">
    <Arg>
        <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
            <Arg>
                <New class="org.eclipse.jetty.http.ssl.SslContextFactory">
                    .........
                </New>
            </Arg>
            <Set name="ExcludeCipherSuites">
                <Array type="java.lang.String">             
                <Item>SSL_RSA_WITH_NULL_MD5</Item>
                <Item>SSL_RSA_WITH_NULL_SHA</Item>
                <Item>SSL_RSA_EXPORT_WITH_RC4_40_MD5</Item>
                <Item>SSL_RSA_WITH_RC4_128_MD5</Item>
                <Item>SSL_RSA_WITH_RC4_128_SHA</Item>
                <Item>SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5</Item>
                <Item>SSL_RSA_WITH_IDEA_CBC_SHA</Item>
                <Item>SSL_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
                <Item>SSL_RSA_WITH_DES_CBC_SHA</Item>
                <Item>SSL_RSA_WITH_3DES_EDE_CBC_SHA</Item>
                <Item>SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA</Item>
                <Item>SSL_DH_DSS_WITH_DES_CBC_SHA</Item>
                <Item>SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA</Item>
                <Item>SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
                <Item>SSL_DH_RSA_WITH_DES_CBC_SHA</Item>
                <Item>SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA</Item>
                <Item>SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA</Item>
                <Item>SSL_DHE_DSS_WITH_DES_CBC_SHA</Item>
                <Item>SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA</Item>
                <Item>SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
                <Item>SSL_DHE_RSA_WITH_DES_CBC_SHA</Item>
                <Item>SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA</Item>
                <Item>SSL_DH_anon_EXPORT_WITH_RC4_40_MD5</Item>
                <Item>SSL_DH_anon_WITH_RC4_128_MD5</Item>
                <Item>SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA</Item>
                <Item>SSL_DH_anon_WITH_DES_CBC_SHA</Item>
                <Item>SSL_DH_anon_WITH_3DES_EDE_CBC_SHA</Item>
                <Item>SSL_FORTEZZA_KEA_WITH_NULL_SHA</Item>
                <Item>SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA</Item>
                <Item>SSL_FORTEZZA_KEA_WITH_RC4_128_SHA</Item>
                <Item>SSL_DHE_RSA_WITH_AES_128_CBC_SHA</Item>
                <Item>SSL_RSA_WITH_AES_128_CBC_SHA</Item>   
                </Array>
            </Set>
        </New>
    </Arg>
</Call>

当我运行“sslscan --no-failed --ssl3 localhost:443”时,我得到了

    Supported Server Cipher(s):
  Accepted  SSLv3  128 bits  DHE-RSA-AES128-SHA
  Accepted  SSLv3  128 bits  AES128-SHA

Prefered Server Cipher(s):
  SSLv3  128 bits  DHE-RSA-AES128-SHA

【问题讨论】:

标签: java security ssl jetty


【解决方案1】:

我不得不在我们集成 Jetty 源代码的应用程序中禁用 SSLv3。根据我在代码中所做的更改,我猜你会添加以下内容:

<Set name="ExcludeProtocols">
    <Array type="java.lang.String">             
       <Item>SSLv3</Item>
    </Array>
</Set>

试一试,让我知道它是否适合你。

【讨论】:

  • 请更新您的答案,说明此配置适用于 SslContextFactory,适用于 Jetty 7/8/9(刚刚测试了所有 3 个,并且有效)
【解决方案2】:

扩展@Lars 答案..

对于 Jetty 7、Jetty 8 和 Jetty 9,您必须在用于配置基于 SSL 的连接器的任何 SslContextFactory 上排除协议 SSLv3(不是密码)。

码头配送

编辑${jetty.home}/etc/jetty-ssl.xml并添加以下XML sn-p。

<Set name="ExcludeProtocols">
  <Array type="java.lang.String">
     <Item>SSLv3</Item>
  </Array>
</Set>

在任何管理org.eclipse.jetty.http.ssl.SslContextFactory的元素内部

对于 Jetty 嵌入式

您为基于 SSL 的连接器创建/管理的任何 SslContextFactory,您只需设置排除的协议。

    SslContextFactory sslContextFactory = new SslContextFactory();
    sslContextFactory.addExcludeProtocols("SSLv3");
    sslContextFactory.setKeyStorePath(...);
    ...

【讨论】:

  • 我仍然坚持使用 Jetty v6(由于仍然基于 Eclipse 3.7),我该怎么做呢? sslContextFactory.addExcludeProtocols() 不存在...
  • Jetty 6 没有这种支持。对不起。您必须制作自己的 SslSocketConnector。有关某些示例代码库,请参阅 Karl 对另一个问题的回答 - stackoverflow.com/a/19937704/775715 - 顺便说一句,Jetty 6 早在 2010 年就已停产,从那时起它就没有漏洞修复。 Poodle 只是它缺少修复的数百个漏洞中的一个(如果在 Windows 上使用 Jetty 将其乘以 3)。强烈建议升级,或者不要在公共互联网上运行 Jetty 6。
  • @centic 这是跟踪 Eclipse 自身升级到 Jetty 9 的 Eclipse 端错误 - bugs.eclipse.org/401784
  • 是的,我知道它已经过时了,不幸的是升级 Eclipse 是一项主要工作,对于已经交付给许多客户的软件来说,它不是一个选项。我们通过在 SslSocketConnector 上注册 LivecycleListener 并在那里访问和调整新创建的 ServerSocket 找到了解决方法。
【解决方案3】:

我已经配置了 Jetty 8.1 whitout ssl3。可以看到jetty-ssl.xml的完整结构。

... ... ... ... SSLv3 数组> 设置> 新> ... 设置> ... 新> 呼叫> 配置>

【讨论】:

    猜你喜欢
    • 2014-12-26
    • 1970-01-01
    • 2014-12-13
    • 2015-02-01
    • 2013-11-23
    • 2022-07-28
    • 2017-03-31
    • 1970-01-01
    • 2020-08-28
    相关资源
    最近更新 更多