Spring Boot 2.4.x-2.7.x启用SSL后出现ERR_TIMED_OUT问题求助
Spring Boot HTTPS服务首次调用成功,30秒后再次调用超时问题
问题现象
- 我们有一台基于Spring Boot 2.4.x搭建的API服务器,使用公网域名和IP提供服务,已稳定运行多年。
- 2023年1月1日后,用户反馈前端首次API调用成功,但30秒后再次调用时失败;用其他REST客户端测试结果一致,可排除前端问题。
- Chrome开发者工具Network面板显示错误:
(failed) net::ERR_TIMED_OUT
排查背景
- 服务端在2023年1月1日前的两个月内,未修改任何代码、Spring Boot版本、配置,也未进行系统更新。
- 曾猜测是客户端浏览器/系统更新导致,但回退旧版本后问题仍存在;也怀疑Tomcat或Spring Boot版本与当前客户端环境不兼容。
- 客户端与服务器之间无代理服务器。
版本测试情况
- 尝试升级至Spring Boot 2.7.x(对应Tomcat 9.0.71),启用SSL时问题依旧;所有Spring Boot/Tomcat版本下,不启用SSL的HTTP调用均稳定无超时问题。
- 出现问题的环境:Spring Boot 2.4.2(Tomcat 9.0.43)、Spring Boot 2.7.8(Tomcat 9.0.71)
SSL配置(唯一差异项)
启用SSL的配置如下,且SSL已成功启用:
server.port=8081 server.ssl.enabled=true server.ssl.key-store=classpath:keystore.p12 server.ssl.key-store-password={my_key_store_password} server.ssl.key-store-type=PKCS12 server.ssl.key-alias={my_alias}
日志信息
- 未启用DEBUG日志时,出现超时错误时Spring Boot控制台及日志文件无任何记录,说明请求未到达API服务,连接被Tomcat拦截。
- 启用DEBUG日志后捕获到以下错误日志:
2023-02-15 05:41:53,658 DEBUG [https-jsse-nio-8081-exec-2] Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@523bac8a:org.apache.tomcat.util.net.SecureNioChannel@3326d48e:java.nio.channels.SocketChannel[connected local=/{my_server_ip}::8081 remote=/{my_client_ip}:55823]], Status in: [CONNECT_FAIL], State out: [CLOSED] 2023-02-15 05:41:53,658 DEBUG [https-jsse-nio-8081-exec-2] LimitLatch : Counting down[https-jsse-nio-8081-exec-2] latch=1 2023-02-15 05:41:53,658 DEBUG [https-jsse-nio-8081-exec-2] NioEndpoint : Calling [org.apache.tomcat.util.net.NioEndpoint@3e576e09].closeSocket([org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@523bac8a:org.apache.tomcat.util.net.SecureNioChannel@3326d48e:java.nio.channels.SocketChannel[connected local=/{my_server_ip}:8081 remote=/{my_client_ip}:55823]])
问题复现验证
- 准备了极简测试项目,仅使用Spring官方REST示例代码,无额外配置或依赖;只需生成对应域名的PKCS12格式keystore.p12文件放入资源目录即可复现问题。
- 生成PKCS12证书的命令:
openssl pkcs12 -export -in fullchain.pem -inkey privatekey.pem -out keystore.p12 -name tomcat -CAfile chain.pem -caname root
- 验证发现:仅使用Tomcat无法复现该问题,推测并非单纯Tomcat问题。
内容的提问来源于stack exchange,提问作者Tina
相关产品推荐
相关产品推荐

