根据项目反馈漏洞处理,修复部署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版本;故采取此方法修复,希望可以帮助到遇到该问题的老铁.