【OPNEGIS】Geoserver原地升级jetty,解决Apache HTTP/2拒绝服务漏洞 (CVE-2023-44487)

Geoserver是我们常用的地图服务器,在开源系统中的应用比较广泛。在实际环境中,我们可能会选用官方的二进制安装包进行部署,这样只要服务器上有java环境就可以运行,方便在现场进行部署。

1.问题来源

这次由于甲方一月一次的漏洞扫描,爆出了jetty的漏洞,搜索得知jetty 9.4.53版本之下的jetty都会受到影响,而现场的geoserver版本已经是2.24.0版本的了,其jetty版本是9.4.52版本,非常尴尬,还得升级。去geoserver官网查找最新版本是2.24.1,下载下来一看,jetty版本仍然是9.4.52,这就尬住了,官方也没有去解决这个问题,只能自己硬着头皮去替换jetty的jar包了。

2.问题解决

之前在解决geoserver jetty漏洞的问题时,我曾经采用替换lib包里的jetty包和外面的start.jar文件来进行修复,现在故技重施,解决思路也是奔着这个目标去。
在这里插入图片描述
首先,替换lib包中的jetty包,jetty的包要去jetty官网下载jetty官网下载
在这里插入图片描述
直接下载zip包即可,分两步替换:

  1. 下载下来之后对照geoserver发行版本中的jetty jar包进行选择替换,总共需要13个jar包
    在这里插入图片描述
  2. 然后将jetty中的start.jar包也替换到geoserver发行包中
    start.ini是jetty的启动配置文件,之前在使用高版本geoserver替换低版本geoserver时需要一并替换,但是现在使用的jetty的官方包替换,这里替换掉之后会丢掉geoserver中的很多配置,所以这里并没有做替换。

替换完成之后就可以去启动试一下了,果然事情不是那么顺利的,报错了

java.lang.UnsupportedClassVersionError: org/geoserver/GeoserverInitStartupListener has been 
compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the 
Java Runtime only recognizes class file versions up to 52.0

百度一下发现是java版本的事情,因为我们替换的jetty包是高版本java编译的,所以运行环境也只能使用高版本的java,java版本和这上面的version的对应关系如下:
在这里插入图片描述
由上图可知,我们的java版本最低也要升级到java11了,去JDK的下载页面查看,发现现在推荐的版本最低都是17了,那那就下载17用吧,反正是向下兼容的。
于是在本地电脑上安装17来测试,发现可以正常运行,大工告成。

3.JDK多版本安装的小插曲

在本地测试安装多版本JDK的过程中,还遇到了JAVA_HOME已经修改成jdk17的版本了,但去cmd中一试还是jdk8版本:

在这里插入图片描述
于是排查自己的修改,发现path中bin目录的配置还是用的原来jdk8的目录,于是修改,再次测试,还是jdk8的版本,没办法,只能继续查找原因。
然后找到如下解决方法:

  1. 删除C:\Windows\System32目录下的java.exe、javaw.exe、javaws.exe三个文件(如果没有就不用删)
  2. 删除环境变量Path中C:\ProgramData\Oracle\Java\javapath的配置

我在system32中没有发现这些文件,在path中发现了javapath的配置,果断删除,重新进入cmd测试,jdk版本就切换过来了。

根据提供的引用内容,没有找到关于geoserverjetty升级的信息。但是,如果您想升级geoserverjetty版本,可以按照以下步骤进行操作: 1.下载新版本的jetty,可以从官网下载最新版本的jetty。 2.将下载的jetty文件解压缩到一个新的目录中。 3.备份geoserverjetty目录,以防止出现问题。 4.将新版本的jetty复制到geoserverjetty目录中。 5.更新geoserver的web.xml文件,以便使用新版本的jetty。 ```xml <!-- 修改前 --> <web-app> <context-param> <param-name>org.geoserver.config.dir</param-name> <param-value>../data_dir</param-value> </context-param> <listener> <listener-class>org.geoserver.platform.GeoServerContextLoaderListener</listener-class> </listener> <filter> <filter-name>SpringSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>SpringSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> <!-- 修改后 --> <web-app> <context-param> <param-name>org.geoserver.config.dir</param-name> <param-value>../data_dir</param-value> </context-param> <listener> <listener-class>org.geoserver.platform.GeoServerContextLoaderListener</listener-class> </listener> <filter> <filter-name>SpringSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>SpringSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.eclipse.jetty.server.ServerListener</listener-class> </listener> </web-app> ``` 6.启动geoserver并验证新版本的jetty是否正常工作。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值