JMeter调用SOAP服务遇SSL握手异常:TLS版本不兼容求助
解决JMeter调用SOAP服务时的SSLHandshakeException(TLS1.0协议不兼容)
问题原因
服务器仅支持TLS1.0协议,但你的JMeter客户端(基于IBM JDK 8)默认仅启用TLS1.2,导致握手失败。即使JRE的java.security未禁用TLS1.0,客户端也不会主动将其纳入协议偏好列表。
客户端配置调整方案
方案1:通过JMeter启动参数指定支持的TLS协议
- Windows:编辑JMeter安装目录下的
bin/jmeter.bat,找到set JAVA_OPTS=行,修改为:set JAVA_OPTS="-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 %JAVA_OPTS%" - Linux/macOS:编辑
bin/jmeter.sh,添加:JAVA_OPTS="-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 $JAVA_OPTS" - 或者直接在启动JMeter时临时指定参数:
jmeter -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2
方案2:修改JMeter系统属性文件
打开JMeter安装目录下的bin/system.properties,添加以下配置行:
https.protocols=TLSv1,TLSv1.1,TLSv1.2
保存后重启JMeter即可生效。
方案3:针对IBM JDK的额外配置(可选)
由于栈信息显示使用IBM JSSE实现,可额外检查IBM JDK的安全配置:
- 打开JRE目录下的
lib/security/java.security,查找ibm.tls.disabledAlgorithms配置项,如果其中包含TLSv1,将其移除; - 也可添加系统参数
-Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2,强制指定客户端支持的协议列表,用法同方案1。
验证
调整配置后重新运行JMeter测试,若握手成功则说明配置生效。
内容的提问来源于stack exchange,提问作者Thomson Mathew
相关产品推荐
相关产品推荐

