控制 Tomcat 的 SSL 密码优先级/顺序以避免 BEAST 攻击

7 ssl tomcat

随着最近关于 SSL BEAST 漏洞的热议,我想尝试提高基于 Tomcat 6 的 SSL 保护网站的安全性。为此,我尝试了谷歌方法,给予非密码块链接 (CBC)密码优先级在我的 Tomcatserver.xml文件中的 HTTP 连接器声明中:

ciphers="TLS_ECDHE_RSA_WITH_RC4_128_SHA,
         TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
         TLS_ECDH_RSA_WITH_RC4_128_SHA,
         TLS_ECDH_ECDSA_WITH_RC4_128_SHA,
         TLS_RSA_WITH_RC4_128_SHA,
         TLS_RSA_WITH_RC4_128_MD5,
         TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
         TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
         TLS_RSA_WITH_AES_256_CBC_SHA,
         TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
         TLS_RSA_WITH_3DES_EDE_CBC_SHA,
         TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
         TLS_RSA_WITH_AES_128_CBC_SHA"
Run Code Online (Sandbox Code Playgroud)

但是 Tomcat 似乎没有使用密码的顺序,而是根据密钥强度选择最佳密码。此外SSL实验室表明,我的网站不显示密码的偏好,而google.com一样。我不想为了使用 128 位 RC4 密码而删除 256 位 CBC 密码,因为担心 SSL 不兼容。我猜测密码选择是在 Java JSSE 层而不是在 Tomcat 中完成的。

有谁知道使用标准 Tomcat HTTP 连接器自定义 SSL 密码的优先级/顺序的简单方法?有没有办法使用简单的自定义 java 类来实现这一点?Tomcat APR 连接器和一些 openSSL 配置选项是否提供了替代方案。有没有其他简单的方法可以做到这一点?

请注意,我意识到这种攻击需要跨站点脚本或其他一些类似的漏洞,因此并没有那么严重(对于我的站点)。但是,如果有简单的步骤来减轻这种攻击,我会采取它们。此外,由于额外的复杂性和风险,我不想引入 Apache 前端(假设有一种方法可以在 Apache 中执行此操作)。

use*_*678 1

在握手期间,客户端发送首选的密码套件,服务器选择两者都可以支持的最强密码套件。
我不确定您期望什么顺序。

SSL 实验室还表明我的网站不显示密码首选项,而 google.com 则显示

我不明白你的意思。
投诉具体是什么?从启用的密码来看,Tomcat 选择的周数比预期的要短?