背景介绍
2021年11月扫描出项目的tomcat存在大量高危漏洞。后经沟通可知,我司提供了tomcat9.0.55版本替换解决方案。经替换后,短暂解决了问题。但在扫描时,仍存在5个高危漏洞。
CVE-2021-25329
CVE-2021-41079
CVE-2021-30640
CVE-2021-24122
CVE-2021-25122
经过我们内部商讨后,决定采用升级tomcat10.0.21的方案。随后在替换tomcat10.0.21版本后,发现web段页面进不去,后台启动一直无响应,info和error日志也一直不打印。查看tomcat的catlina.out日志一直报错,并且浏览器控制台一直报404!
定位问题
查看官网:https://tomcat.apache.org/download-10.cgi后发现,在tomcat10之后,将Java EE的命名空间全部转义到了Jakarta,导致原来打包的war内封装的.class文件全部失效。
从官网可知,官方提供了一个“转移工具(migration tool)”,可对其进行转移。点击跳转过去为GitHub链接地址,下载较慢!下载了10几分钟只有5%左右,而且经常断掉。
我们可以从tomcat官网上进行源码下载,并进行编译得到
⦁ 下载migration tool源码(https://tomcat.apache.org/download-migration.cgi)
⦁ 本地配置好maven,用于编译源码(当然前提是必须装好java8的编译环境)
⦁ 将下载好的migration tool即jakartaee-migration-1.0.0-src.tar.gz解压
⦁ 进入解压后的目录,使用maven对源码进行编译(mvn verify)
进入target文件夹,找到刚才编译生成的jakartaee-migration-1.0.0-shaded.jar
⦁ 对war包进行重新编译,命令为:
java -jar jakartaee-migration-x.x.x-SNAPSHOT-shaded.jar <source> <destination>
其中<source> 填需要迁移的war包的路径,<destination>填生成新war包的路径
如下所示
以上即为在tomcat10以上的war包程序适配tomcat10以后版本的解决方案。
将新包替换至现场后解决问题。