捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 > 06 其他 > 正文
3 2026.06

“SSL/TLS服务器瞬时Diffie-Hellman公共密钥过弱”

点击次数:3 更新时间:2026/6/3 21:40:57  【打印此页

网站进行了https的部署,证书和秘钥都是用keytool生成的,但有不少人用最新版本的Google浏览器进行访问的时候报错:“服务器的瞬时 Diffie-Hellman 公共密钥过弱”

 

SSL/TLS协议是一种基于SSL/TLS协议的安全通信协议,广泛应用于互联网和企业内部网络中。Diffie-Hellman协议作为SSL/TLS协议的一部分,用于保证通信双方交换的密钥是安全的。然而,在实际使用中,Diffie-Hellman公共密钥存在一些弱点,可能对通信安全造成潜在的威胁。

 

 

原理

  Diffie-Hellman协议用于生成公共密钥对,以确保通信双方交换的密钥是安全的。其原理是:在两个节点之间交换一些随机数,然后使用这些随机数计算出一个固定的椭圆曲线参数(ECC),接着生成两个大质数p和q,它们将成为Diffie-Hellman密钥交换的基础。在实际使用中,由于计算ECC的过程中可能存在误差,导致生成的密钥可能存在一定程度的弱点。

 

 

解决方案

  为了解决Diffie-Hellman公共密钥过弱的问题,我们可以采取以下措施:

 

  1、增加密钥长度:为了提高密钥的安全性,可以增加密钥长度。具体实现方法如下:一种简单的方法是将原始椭圆曲线参数扩展为n个点,每个点的离散距离为r=h/(2^n),其中h为大素数。另一种更复杂的方法是使用RSA加密算法中的大质数分解技术生成两个大质数p和q。这些大质数将成为Diffie-Hellman密钥交换的基础。

 

  2、选择更好的证书:为了避免证书被伪造或篡改,可以选择更好的证书。具体实现方法如下:首先选择可信任的证书颁发机构(CA),并确保其颁发的证书是真实有效的。然后,要求CA对证书进行强制性检查和验证,以确保其有效性和完整性。

 

  3、使用Diffie-Hellman签名:为了保证通信双方交换的密钥是安全的,可以使用Diffie-Hellman签名来验证密钥交换过程中是否存在误差。具体实现方法如下:首先计算出每个节点生成的随机数a和b,并使用公钥对它们进行加密生成公钥(e和d)。接着计算出私钥(d和c)并进行签名,即e和d”,j。通信双方将这两个签名与发送方交换的私钥对比,如果相同则认为无误差发生;如果不相同,则存在误差存在需要进行重传。

 

 

具体操作:

  升级到最新的中间件版本,如JDK版本(8.0以上),就可以立刻解决该问题。

  如果没有办法升级JDK,可以采用调整服务器加密套件的配置来解决。

 

  1.Apache服务器相关配置

    - 首先生成大于1024bit(例如2048bit)的dhkey:openssl dhparam -out dhparams.pem 2048

    - 然后在对应服务器中配置Apache2.4.8及以后版本 使用如下配置命令配置(http.conf中或者对应的虚拟主机配置文件中添加)

        SSLOpenSSLConfCmd DHParameters “{path to dhparams.pem}”

    - Apache2.4.7版本、Apache2.2.31版本及以后版本、redhat debian等大多发行版中最新Apache2.2.x:通过把dhparams.pem的内容直接附加到证书文件后面

    - Apache2.4.7之前2.4.x版本、Apache2.2.31之前版本、dhparam默认为1024bit 无法修改

 

  2.Nginx服务器相关配置

    - 首先生成大于1024bit(例如2048bit)的dhkey:openssl dhparam -out dhparams.pem 2048

    - nginx使用如下命令配置(在对应的虚拟主机配置文件nginx.conf中server字段内添加)

        ssl_dhparam {path todhparams.pem}

          cd /usr/local/nginx/conf

          openssl dhparam -out dhparams.pem 2048

          chmod -R 755 dhparams.pem

 

  3.Tomcat服务器相关配置

    - 基于Java 1.6,请在Server.xml中增加以下ciphers配置:

      <Connector port=”443″ protocol=”org.apache.coyote.http11.Http11Protocol”

      ……

      ciphers=”      TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA”></connector>

    - 基于Java 7,请在Server.xml中增加以下ciphers配置:

      <Connector port=”443″ protocol=”org.apache.coyote.http11.Http11Protocol”

      ……

      ciphers=”TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,SSL_RSA_WITH_3DES_EDE_CBC_SHA”></connector>

    - 如果以上不生效,可以尝试以下方法:

      替换JAVA_HOME/jre/lib/security/下的两个加密套件

        local_policy.jar

        US_export_policy.jar

      在部署单点的那个服务器中的tomcat的conf/server.xml的8443端口配置中加入下面这个:

        sslEnabledProtocols = "TLSv1,TLSv1.1,TLSv1.2"

ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA"

 

  4.Weblogic服务器相关配置

    找到config.xml文件,修改编辑其中参数,增加:

      TLS_RSA_WITH_3DES_EDE_CBC_SHA

      TLS_RSA_WITH_AES_128_CBC_SHA

    还可以在Chrome浏览器“右键–》属性”增加如下配置:

      “C:\Program Files\Google\Chrome\Application\chrome.exe” –cipher-suite-blacklist=0x0088,0x0087,0x0039,0x0038,0x0044,0x0045,0x0066,0x0032,0x0033,0x0016,0x0013

    如果服务器配置无法修改,例如2.31之前版本,可以禁用DHE系列算法,采用保密性更好的ECDHE系列算法,如果ECDHE不可用可以采用普通的 RSA。

 

  5.ssh

  该漏洞是DHE算法协议漏洞,openssh不涉及该漏洞。咱们的sshd默认不开启这个算法,如果扫描出来这个漏洞可以通过修改配置文件来禁用:

  修改sshd的配置文件 /etc/ssh/sshd_config,在Kexalgorithms关键字的配置项中删除diffie hellman的相关字段(diffie-hellman-group-exchange-sha256)来禁用DHE算法,重启sshd服务即可不受攻击。

  影响:在算法层面修复客户端的兼容性会产生较大影响,比如一些只支持diffie-hellman协议的客户端无法连接。

 

  6.Springboot

    建议修改Springboot配置文件 application.yml 添加

    “server.ssl.enabled-protocols: TLSv1,TLSv1.1,TLSv1.2

ciphers: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA”

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:3 更新时间:2026/6/3 21:40:57  【打印此页
关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修