根据项目反馈漏洞处理,修复部署SSL证书时反馈TLS1.2版本漏洞:
漏洞描述如下:
漏洞类型:密码学问题
漏洞描述:
TLS (全称 Transport Layer Security,安全传输层 协议)是一套用于在两个通信应用程序之间提供 保密性和数据完整性的协议。 TLS 1.2 版本中的 SHA-1 存在安全漏洞。上下文相关的攻击者可利 用该漏洞实施欺骗攻击。
漏洞危害:
攻击者可在没有认证的情况下直接操作对应的 API 接口,可直接被非法增删改查数据。且因
为攻击是在未认证下进行的,所以后续无法通过 定位用户进行异常排查。
修复方案:
1 、使用行业认证的强加密算法,如 AES,避免 使用已被破解或不安全的算法。
2、定期更新和更换密钥,采用安全的密钥管理 和存储机制。
3、确保加密强度足够,避免使用弱密码或短密 钥。
4、对敏感数据进行完整性校验和认证加密,确 保数据在传输和存储过程中的安全性。
本项目使用的是tomcat8.5
经过多方查找,最终定位在tomcat配置证书时未做定向指定,下面是处理方式(配置证书请自行搜索解决,这里只说明解决漏洞);
1、在部署的tomcat中找到conf/server.xml
2、修改证书配置属性,这里主要修改了SSLProtocol和ciphers
<Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="域名" ><SSLHostConfig hostName="域名" SSLProtocol="TLSv1.3" ciphers="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE:!DES"><Certificate certificateKeystoreFile="cert/域名对应生成的jks文件.jks" certificateKeystorePassword="生成jks证书密码" type="RSA" /></SSLHostConfig></Connector>
完整的server.xml配置如下(原配置注释内容已删除,为了减少滚动查看):
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN"><Listener className="org.apache.catalina.startup.VersionLoggerListener" /><!-- Security listener. Documentation at /docs/config/listeners.html<Listener className="org.apache.catalina.security.SecurityListener" />--><!--APR library loader. Documentation at /docs/apr.html --><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /><!-- Prevent memory leaks due to use of particular java/javax APIs--><Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /><Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /><Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /><GlobalNamingResources><Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources><Service name="Catalina"><Connector port="80" protocol="HTTP/1.1"connectionTimeout="20000" maxHttpHeaderSize="8999"redirectPort="8443" /><Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="域名" ><SSLHostConfig hostName="域名" SSLProtocol="TLSv1.3" ciphers="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE:!DES"><Certificate certificateKeystoreFile="cert/域名对应生成的jks文件.jks" certificateKeystorePassword="生成jks证书密码" type="RSA" /></SSLHostConfig></Connector><!-- Define an AJP 1.3 Connector on port 8009 --><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost"><Realm className="org.apache.catalina.realm.LockOutRealm"><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/></Realm><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host></Engine></Service>
</Server>
配置完成后使用openssl进行测试查看;
安装openssl参考:win10 安装openssl并使用openssl创建自签名证书_win10 openssl-CSDN博客
查看测试证书信息名:Windows中使用cmd命令(如果提示openssl不是内部命令,请参考上面安装连接讲解);
openssl s_client -connect 域名:443 -tls1_2
openssl s_client -connect 域名:443 -tls1_3
部分查看信息如下图:
至此反馈漏洞问题已修复;官方反馈可以升级tomcat版本来进行修复,因项目特殊,暂不允许升级tomcat版本;故采取此方法修复,希望可以帮助到遇到该问题的老铁.