SpringBoot项目:SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱
SpringBoot项目:SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱
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
更多推荐
所有评论(0)