Tomcat 10.1.19 FIPS模式下SSL通信超时故障求助
Tomcat TLS握手超时故障分析与求助
环境配置
- Tomcat版本:10.1.19
- Connector配置:
port = 8443 protocol="org.apache.coyote.http11.Http11NioProtocol" defaultSSLHostConfigName="defaultConfig"
- SSLHostConfig配置:
<SSLHostConfig hostName="defaultConfig" certificateVerification="required" ciphers="TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" protocols="TLSv1.2" sessionCacheSize="10000" sessionTimeout="3630" >
- JDK环境:类路径包含
/opt/java/zulu17.50.20-sa-jdk17.0.11-linux_x64-fips-bc/fips_libs,启动参数添加-Dorg.bouncycastle.fips.approved_only=true
故障现象
使用带--tls-max 1.2参数的curl请求时,在完成"TLSv1.2 (IN), TLS handshake, Server key exchange (12):"步骤后等待约20秒,最终报错:
* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to localhost:8443 * Closing connection 0 curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to localhost:8443
Tomcat访问日志显示400响应:
10.29.5.112 - - 2024-10-02 00:05:31.204 null -1 "-" 400 - 0 - 10.29.5.22 - "-" "-" null
其中协议为null、端口-1、请求行为空、响应大小为-、耗时0。
排查过程
- 限制SSL协议为TLSv1.2、使用FIPS合规cipher套件,无改善;
- 启用
-Djavax.net.debug=ssl及设置org.apache.catalina.level=FINE,未获取有效日志; - gnutls-util显示SSL握手完成,gnutls-cli输入HTTP请求后可正常通信,但curl仍超时;
- TCP抓包显示证书请求与完成间存在20秒间隙,达到Tomcat连接超时后被关闭;wget请求耗时约30ms;
- strace显示Tomcat存在5秒延迟(已将连接超时改为5秒),疑似CA证书分片导致;
临时解决
将truststore.jks文件大小从166k缩减至144k后,故障消失。现求助该故障的深层原因及优化方案。
内容的提问来源于stack exchange,提问作者Sameer Naik
相关产品推荐
相关产品推荐

