所以,我有 JBoss 5.1.0 GA,我在这里读到了我需要如何禁用 SSLv3:
https://access.redhat.com/solutions/1232233
这里没有提到的是我还需要摆脱所有支持回退到 SSLv3 的密码。当我这样做时,我在这个网站上得到了一个“绿色复选标记”
https://www.tinfoilsecurity.com/poodle
这基本上是确认我已经保护了我的服务器并且不再支持 SSLv3,但是现在我无法使用 IE(所有版本的 IE)访问我的网站。由于我在 server.xml 配置中的密码列表中只有 4 个密码,因此我的目标是在此列表中添加更多密码,以使 IE 正常工作。我添加了 50 多个密码,但 IE 仍然无法加载我的网站。这是我到目前为止使用的所有密码的列表(我从这里获得了列表(https://www.openssl.org/docs/apps/ciphers.html):
TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA, TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA, TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA, TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA, TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA, TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA, TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, TLS_DH_DSS_WITH_SEED_CBC_SHA, TLS_DH_RSA_WITH_SEED_CBC_SHA, TLS_DHE_DSS_WITH_SEED_CBC_SHA, TLS_DHE_RSA_WITH_SEED_CBC_SHA, TLS_RSA_WITH_NULL_MD5, TLS_RSA_WITH_NULL_SHA, TLS_RSA_EXPORT_WITH_RC4_40_MD5, TLS_RSA_WITH_RC4_128_MD5, TLS_RSA_WITH_RC4_128_SHA, TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5, TLS_RSA_WITH_IDEA_CBC_SHA, TLS_RSA_EXPORT_WITH_DES40_CBC_SHA, TLS_RSA_WITH_DES_CBC_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA, TLS_DH_DSS_WITH_DES_CBC_SHA,TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA, TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA, TLS_DH_RSA_WITH_DES_CBC_SHA, TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA, TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, TLS_DHE_DSS_WITH_DES_CBC_SHA, TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, TLS_DHE_RSA_WITH_DES_CBC_SHA, TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_DH_DSS_WITH_AES_128_CBC_SHA, TLS_DH_DSS_WITH_AES_256_CBC_SHA, TLS_DH_RSA_WITH_AES_128_CBC_SHA, TLS_DH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_KRB5_WITH_RC4_128_MD5, TLS_KRB5_WITH_RC4_128_SHATLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, TLS_DHE_DSS_WITH_DES_CBC_SHA, TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, TLS_DHE_RSA_WITH_DES_CBC_SHA, TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_DH_DSS_WITH_AES_128_CBC_SHA, TLS_DH_DSS_WITH_AES_256_CBC_SHA, TLS_DH_RSA_WITH_AES_128_CBC_SHA, TLS_DH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_KRB5_WITH_RC4_128_MD5, TLS_KRB5_WITH_RC4_128_SHATLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, TLS_DHE_DSS_WITH_DES_CBC_SHA, TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, TLS_DHE_RSA_WITH_DES_CBC_SHA, TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_DH_DSS_WITH_AES_128_CBC_SHA, TLS_DH_DSS_WITH_AES_256_CBC_SHA, TLS_DH_RSA_WITH_AES_128_CBC_SHA, TLS_DH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_KRB5_WITH_RC4_128_MD5, TLS_KRB5_WITH_RC4_128_SHATLS_DH_RSA_WITH_AES_128_CBC_SHA, TLS_DH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_KRB5_WITH_RC4_128_MD5, TLS_KRB5_WITH_RC4_128_SHATLS_DH_RSA_WITH_AES_128_CBC_SHA, TLS_DH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_KRB5_WITH_RC4_128_MD5, TLS_KRB5_WITH_RC4_128_SHA
这些密码都不适用于 IE,这意味着当我使用 IE 访问我的服务器时,我得到“无法显示此页面”。
有人可以帮我弄这个吗?有没有我可以使用的密码,它不会在我的服务器上打开 SSLv3,并且也可以与 IE 一起使用?
更新:如果我实施 RedHat 建议的解决方案(即将 sslProtocols 更改为“TLSv1,TLSv1.1,TLSv1.2”):
- 启动 JBoss 时出现错误提示“TLSv1、TLSv1.1、TLSv1.2 SSLContext 不可用”。这意味着这个字符串是无效的,我必须只使用这些协议之一。好吧,我会选择最安全的一个:“TLS1.2”
- 另一个问题是在 RedHat 解决方案中,没有提及密码。我的印象是不再需要“密码”元素,所以我从 server.xml 中删除了它,将 sslProtocols 值更改为“TLSv1.2”并扫描了我的服务器。它仍然很脆弱!
- 我尝试设置 TLSv1.1 和 TLSv1。这没用。似乎 sslProtocols 元素对服务器使用的协议没有任何影响,这意味着只有 ciphers 元素有一些价值。
- 好吧,好吧,我说...我会找到一些 TLSv1.2 特定的密码,然后我会在那里添加它,从而紧紧保护我的服务器。我从https://www.openssl.org/docs/apps/ciphers.html链接中指定的列表中添加了所有 TLSv1.2 密码。扫描我的服务器,得到一个“绿色复选标记”,一切正常且安全......试图通过任何浏览器访问我的服务器......“无法打开页面”。Chrome:ERR_SSL_VERSION_OR_CIPHER_MISMATCH Firefox:ssl_error_no_cypher_overlap IE:无法打开页面(没有礼貌地告诉我原因)什么鬼?!我现在该怎么办?
- 好的,我将从https://www.openssl.org/docs/apps/ciphers.html列表中自下而上开始添加密码,跳过 SSLv3 密码。我得到了这个(非常短的)列表:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,(IE 仅适用于此密码) TLS_DHE_RSA_WITH_AES_128_CBC_SHA,(FF、Chrome 和 Safari 使用此密码)TLS_DHE_RSA_WITH_AES_256_CBC_SHA,(FF、Chrome 和 Safari 使用此密码)所有浏览器都工作,事情看起来不错。 https://www.tinfoilsecurity.com/poodle -> 绿色复选标记,一切都好!为了安全起见,让我们尝试更多的在线扫描仪... https://www.expeditedssl.com/poodle -> 不易受到攻击。伟大的! https://www.poodlescan.com/ -> 易受攻击!去他妈的!
- 终极扫描:ssllabs.com ... 易受攻击!
我在这里失去理智......请帮助!
UPDATE2:经过 2 天试图找出问题所在... RedHat 建议的修复包含元素 sslProtocol***s*** 而不是 sslProtocol(注意最后没有“s”),我正在使用的,并且在官方 JbossWeb 文档http://docs.jboss.org/jbossweb/2.1.x/config/http.html中有描述
我刚刚添加了 sslProtocols = "TLSv1,TLSv1.1,TLSv1.2" 并删除了 "ciphers" 元素,一切都按预期工作。