1、问题描述

        公司业务原因有一台公网的服务器A,上面运行spring boot项目,我们使用ssl证书的方式将其公网ip配置了一个公网域名安全部门在扫描该服务器的漏洞时发现存在漏洞【SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱】。

详细描述:

        安全套接层(Secure Sockets Layer,SSL),一种安全协议,是网景公司( Netscape)在推出Web浏览器首版的同时提出的,目的是为网络通信提供安全及数 据完整性。SSL在传输层对网络连接进行加密。传输层安全TLS(Transport Layer Security),IETF对SSL协议标准化(RFC 2246)后的产物,与SSL 3.0差异很小。 当服务器SSL/TLS的瞬时Diffie-Hellman公共密钥小于等于1024位时,存在可以恢复 纯文本信息的风险。

2、解决办法

        一、http服务器相关配置 1.首先生成大于1024bit(例如2048bit)的dhkey openssl dhparam -out dhparams.pem 2048 2.然后在对应服务器中配置 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 无法修改 nginx使用如下命令配置(在对应的虚拟主机配置文件nginx.conf中server字段内添 加)ssl_dhparam {path to dhparams.pem}。

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

3、修改配置

        我们采用的是windows服务器,所以采取第二种方法解决,即修改加密算法。需要在项目配置文件中的SSL证书的位置增加两行代码:

原配置文件:

#SSL证书
server.port=9999
server.ssl.key-store=7535512_XXXXXXXXX.pfx
server.ssl.key-store-password=XXXXXXX
server.ssl.keyStoreType=PKCS12

新配置文件:

#SSL证书
server.port=9999
server.ssl.key-store=7535512_XXXXXXXXX.pfx
server.ssl.key-store-password=XXXXXXX
server.ssl.keyStoreType=PKCS12

server.ssl.enabled-protocols=TLSv1,TLSv1.1,TLSv1.2
server.ssl.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
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐