Tomcat 8.1迁移至10.1后HTTP 400错误排查求助
Tomcat 10.1迁移后HTTP 400错误排查问题
我们正将系统从Elastic Beanstalk平台(Corretto 8 & Tomcat 8.1)迁移至(Corretto 17 & Tomcat 10.1),但某主机通过DNS发送的HTTP请求返回HTTP Status 400错误,怀疑是Tomcat 10.1的配置问题。
说明
- 不了解该项目的开发阶段信息
- 仅能提供server.xml中的Connector配置,其余配置基本一致
- 请求来自无法访问代码的固件,仅能提供AccessLogValve日志
- 已查阅Tomcat 10.1迁移指南,但尚未找到解决方案,可提供更多所需信息
Tomcat 8.0的Connector配置
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="443"/> <Connector SSLEnabled="true" clientAuth="false" keystoreFile="${user.home}/.keystore" keystorePass="changeit" maxThreads="200" port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS"/> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
Tomcat 10.1的Connector配置
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="443" allowHostHeaderMismatch="true" rejectIllegalHeader="false"/> <Connector SSLEnabled="true" maxThreads="150" sslProtocol="TLS" maxConnections="1000" port="443" scheme="https" allowHostHeaderMismatch="true" rejectIllegalHeader="false" protocol="org.apache.coyote.http11.Http11NioProtocol" secure="true" > <SSLHostConfig> <Certificate certificateKeyAlias="localhost" certificateKeystoreFile="${user.home}/.keystore" certificateKeystorePassword="changeit" type="RSA"/> </SSLHostConfig> </Connector> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" secretRequired="false" address="::1"/>
AccessLogValve请求日志示例
192.168.1.18 - - [16/Jul/2024:15:14:45 +0800] "-" 400 -
已尝试以下操作,但问题仍存在:
- 切换证书别名(tomcat和localhost)
- 设置
rejectIllegalHeaders=false和allowHostHeaderMismatch=true(Tomcat 8默认值与10相反)
是否遗漏了其他Tomcat 8的配置?
更新
通过Wireshark排查SSL握手过程,发现请求在Server Hello阶段失败。对比Tomcat 8的正常请求数据(Frame、Ethernet、IPv4),二者基本一致,仅TCP端口不同(正常:3058,异常:3643),会话完整性不同(正常:Incomplete DATA 15,异常:Complete WITH_DATA 31)。
内容的提问来源于stack exchange,提问作者needHelpInTomcatAndSpring
相关产品推荐
相关产品推荐

