GF3(JDK 6)如何配置安全协议以移除过时的加密算法。

6
在我工作的公司中,我们有一个 GF 3.1.1(JDK 6)服务器与 CAS 一起使用,用于对另一个系统中的用户进行认证。在 Firefox 的最新更新(v. 39x)后,我们从浏览器获取到以下信息:
mydomain.com SSL 在“服务器密钥交换握手消息”中接收到一个弱的临时 Diffie-Hellman 密钥。
如果没有this workaround 或者使用其他浏览器,则无法访问该站点。在 Chrome 中,我可以正常访问,但是如果查看连接属性,则会显示:
您的连接采用过时的加密方案进行加密。 该连接使用 TLS 1.0。 该连接使用 AES_128_CBC 进行加密,使用 SHA1 进行消息验证,DHE_RSA 作为密钥交换机制。
我无法配置所有客户端浏览器或告诉他们仅使用 Chrome。未来可能也会出现类似问题。因此,我的解决方案是正确配置服务器。问题是我不知道如何做到这一点。
我在GF中发现可以在“配置”>“服务器配置”>“网络配置”>“协议”>“http-listner-2”>“SSL”中进行配置。
然后我在这里找到了一份建议使用的密码黑名单和白名单。我尝试删除所有黑名单中的密码,将所有白名单中的密码添加进去,但问题仍然存在。我认为这份列表可能已经过时。
非常感谢任何帮助。

那么你在问什么?要一个最新的密码列表吗? - Fildor
或多或少。据我所知,我需要将TLS 1.0的版本更新到1.1或1.2,并使用推荐的密码(最新列表)。GF有一个密码列表,我可以选择使用其中的内容,但是当我需要设置一个不在列表中的密码时,我不知道该怎么办。 - Sertage
实际上,现在Chrome也在Glassfish上出问题了。但是请参见下面的解决方案。 - Per Lindberg
3个回答

9
最终,我找到了一个解决方案。我搜索了很多,但是我能够找到一个解决方案,所以我尝试逐个测试密码。因此,为了使其正常工作(我不是说这是正确的方式),我必须执行以下操作:
在:
配置>服务器配置>网络配置>协议>http-listner-2> SSL
1.添加所有可用的密码 2.删除所有Diffie-Hellman密码 3.保存
之后,我们的应用程序可以在任何浏览器中打开。希望这可以帮助某些人。
对于管理员:
配置>服务器配置>服务HTTP>侦听器HTTP> admin-listner> SSL
1.添加所有可用的密码 2.删除所有Diffie-Hellman密码 3.保存 4.重新启动

编辑:此处的白名单进行比较,新白名单中包含以下密码:

白名单

  1. TLS_RSA_WITH_AES_128_CBC_SHA
  2. SSL_RSA_WITH_3DES_EDE_CBC_SHA

2

我也在使用Chrome和管理员控制台时遇到了这个问题。我解决的方法是删除侦听器的当前ssl证书,并使用--ssl3tlsciphers选项创建一个特定的密码集重新创建它。对于我来说,这是管理员侦听器,所以我首先删除了当前默认证书:

asadmin delete-ssl --type http-listener admin-listener

然后我使用以下命令重新创建了它:

asadmin create-ssl --type http-listener --certname s1as --ssl3tlsciphers SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_RSA_WITH_DES_CBC_SHA,SSL_RSA_EXPORT_WITH_RC4_40_MD5,SSL_RSA_EXPORT_WITH_DES40_CBC_SHA,TLS_EMPTY_RENEGOTIATION_INFO_SCSV,SSL_RSA_WITH_NULL_MD5,SSL_RSA_WITH_NULL_SHA,SSL_DH_anon_WITH_RC4_128_MD5,TLS_DH_anon_WITH_AES_128_CBC_SHA,SSL_DH_anon_WITH_3DES_EDE_CBC_SHA,SSL_DH_anon_WITH_DES_CBC_SHA,SSL_DH_anon_EXPORT_WITH_RC4_40_MD5,SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA    admin-listener

我注意到仅仅删除默认证书并不能彻底从domain.xml文件中删除所有引用。我没有找到正确的方法来做这件事情,只能试错。另一种方法是修改定义了监听器的ssl元素的domain.xml文件,在其中添加属性"ssl3-tls-ciphers":

<ssl ssl3-tls-ciphers="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_RSA_WITH_DES_CBC_SHA,SSL_RSA_EXPORT_WITH_RC4_40_MD5,SSL_RSA_EXPORT_WITH_DES40_CBC_SHA,TLS_EMPTY_RENEGOTIATION_INFO_SCSV,SSL_RSA_WITH_NULL_MD5,SSL_RSA_WITH_NULL_SHA,SSL_DH_anon_WITH_RC4_128_MD5,TLS_DH_anon_WITH_AES_128_CBC_SHA,SSL_DH_anon_WITH_3DES_EDE_CBC_SHA,SSL_DH_anon_WITH_DES_CBC_SHA,SSL_DH_anon_EXPORT_WITH_RC4_40_MD5,SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA" classname="com.sun.enterprise.security.ssl.GlassfishSSLImpl" cert-nickname="s1as"></ssl>

两种方法都需要重新启动Glassfish。


1

谢谢,Sertage,这很有效!

但是,也需要修复管理员端口(通常为4848)的协议。(当然,它也应该使用HTTPS!)

但是,在GF 3.1.2.2中,“admin-listener”协议似乎有点指向“sec-admin-listener”协议,并且没有“SSL”选项卡。更改协议“admin-listener”的SSL参数会导致错误消息,显示“无法应用更改。configs.config.server-config.network-config.protocols.protocol.admin-listener.ssl未找到配置”。如何配置管理员端口?有什么建议吗?


很高兴知道我能帮助到别人。因为在我们公司,我们只能通过内部网络访问服务器,管理员协议被禁用了。但你说得对,这也应该是安全的。我会尝试看看能否想出一些解决方案。 - Sertage
2
@PerLindberg 首先按照Sertage所描述的方式更改另一个协议。然后,您可以通过编辑domain.xml文件将更改复制到sec-admin-listener协议中。从您更改的协议元素中的ssl元素复制ssl3-tls-ciphers属性,并将其添加到sec-admin-listener协议中的ssl元素中。一定要备份您的配置目录。 - mikeatv
谢谢,这个方法可行!只需将<protocol name="http-listener-2"><ssl>中的XML属性ssl3-tls-ciphers复制到<protocol name="sec-admin-listener"><ssl>即可。 - Per Lindberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接