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


图腾
信创到家 2024-01-22 15:05:39 47905 赞同 0 反对 0
分类: 资源 标签: 银河麒麟
“SSL/TLS服务器瞬时Diffie-Hellman公共密钥过弱”

网站进行了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文件,修改编辑其中参数,增加:

    <ciphersuite>TLS_RSA_WITH_3DES_EDE_CBC_SHA</ciphersuite>
    <ciphersuite>TLS_RSA_WITH_AES_128_CBC_SHA</ciphersuite>

    还可以在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”

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
信创到家L3
粉丝 2 资源 151 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  124
统信桌面专业版【全盘安装UOS系统】介绍  119
银河麒麟桌面操作系统安装佳能打印机驱动方法  110
银河麒麟桌面操作系统 V10-SP1用户密码修改  104
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!