Java 7 和 8 如何以不同方式处理 DHE 密钥并解决错误

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

在 Java 7 和 8 下,如果在 WSO2 产品中使用“弱”DHE 公钥进行 SSL 通信,Firefox v39.0 + 和 Chrome v45.0 + 可能会产生错误。

要解决此问题,您有以下三种选择:

1.您需要 禁用 使用的DHE密码。

配置以下密码套件,然后可用于 CARBON_HOME/repository/conf/tomcat/catalina-server.xml 中的 SSL 通信。此密码参数必须在 TLS 连接器元素内配置。


 ciphers="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA"

为了实现“ 完美前向保密 ”,我们通常需要 DHE;因此,删除 DHE 密码不是一个好的选择。

2. 为 DHE_RSA SSL 密码套件使用 1024 位 (或更大)Diffie-Hellman 组。

为此,您需要使用 JAVA 8.0 。 JAVA 8.0 中的以下参数可用于将密钥大小自定义为某个更大的值。


 ciphers="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA"

JAVA 7.0 支持 1024 位密钥大小,您不能使用上述参数来配置更大的密钥大小(在最新的 JAVA 7.0 公开版本中)

目前WSO2产品 不能 使用JAVA 8.0运行;但是,WSO2 的未来版本将能够使用 JAVA 8.0 运行,然后您可以使用具有更大密钥大小的 DHE 密码。

3.启用 ECDHE
我们可以在 WSO2 服务器中只启用 ECDHE 密码而不使用 DHE 密码。这样,我们就可以免受“弱密码”和“完美前向保密”攻击。

因此,您可以在 CARBON_HOME/repository/conf/tomcat/catalina-server.xml 中添加以下可用于 SSL 通信的密码套件。 此密码的参数必须在 TLS 连接器元素内配置。


 ciphers="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA"


相关文章