我们正在运行一个JMeter脚本,该脚本将json数据发布到内部https端点。但是在运行脚本时,我们会间歇性地获取javax.net.ssl.SSLHandshakeException(在100次调用中约3次)。
此问题与以下SO问题非常相似,但在那里讨论的所有解决方案都不适合我: javax.net.ssl.SSLHandshakeException: handshake_failure when using JMeter with SSL (JDK8)
我正在使用JDK8和最新的JMeter 4.0版。我打开了ssl调试功能,并从ClientHello和ServerHello消息中打开,看起来服务器支持TLS 1.2和JMeter也支持的TLS_RSA_WITH_AES_128_CBC_SHA密码套件。
但是我在SSL日志中看到以下失败的JMeter请求:
写:TLSv1.2握手,长度= 64
阅读:TLSv1.2警报,长度= 2
RECV TLSv1.2警报:致命,握手失败
%%无效:[会话17,TLS_RSA_WITH_AES_128_CBC_SHA]
我尝试了以下解决方案:
1.在jre cacerts中添加了服务器证书
2.下载了不受支持的密码的本地策略jar,并将其复制到jre lib安全文件夹
3.更新JMeter的httpclient jar(4.5)
4.在JMeter配置中明确启用TLS 1.2
我使用TestSSLServer来测试服务器的SSL功能,这就是它的返回结果:
SSLv3:
服务器选择:强制执行服务器首选项
3--(键:RSA)RSA_WITH_RC4_128_SHA
3--(键:RSA)RSA_WITH_AES_128_CBC_SHA
3--(键:RSA)RSA_WITH_AES_256_CBC_SHA
3--(键:RSA)RSA_WITH_3DES_EDE_CBC_SHA
TLSv1.0:同上
TLSv1.2:
服务器选择:强制执行服务器首选项
3--(键:RSA)RSA_WITH_RC4_128_SHA
3--(键:RSA)RSA_WITH_AES_128_CBC_SHA
3--(键:RSA)RSA_WITH_AES_256_CBC_SHA
3--(键:RSA)RSA_WITH_3DES_EDE_CBC_SHA
3--(键:RSA)RSA_WITH_AES_128_CBC_SHA256
3--(密钥:RSA)RSA_WITH_AES_256_CBC_SHA256
关于可能出什么问题的任何想法吗?
答案 0 :(得分:1)
我无法真正找到确切的原因,但是现在知道可能出了什么问题。根据Dave的建议,我打开了SSL调试功能,并浏览了所有日志,并将失败的请求与成功的请求进行了比较。
对于失败的请求,这是我在日志中看到的:
如您所见,服务器由于某种原因无法响应。经过一番谷歌搜索后,我偶然发现了以下有关f5 SSL问题的论坛。我们的服务也通过f5。我无法确认,因为我对我们的服务器端没有太多控制权,但是下面的问题看起来很相似:
https://devcentral.f5.com/questions/big-ip-proxy-ssl-121-handshake-failure-47464
答案 1 :(得分:0)
这是bug id 563488中记录的,针对K34019109中所述的13.0之前的BIG-IP版本的已知问题。