JMeter javax.net.ssl.SSLHandshakeException间歇性地

时间:2018-07-08 01:21:35

标签: java ssl jmeter sslhandshakeexception f5

我们正在运行一个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

关于可能出什么问题的任何想法吗?

2 个答案:

答案 0 :(得分:1)

我无法真正找到确切的原因,但是现在知道可能出了什么问题。根据Dave的建议,我打开了SSL调试功能,并浏览了所有日志,并将失败的请求与成功的请求进行了比较。

对于失败的请求,这是我在日志中看到的:

  1. 客户端发送了Hello,服务器发送了
  2. 服务器已发送证书且服务器已完成
  3. 客户端密钥交换和更改密码规范
  4. 完成
  5. 此处失败,并且服务器没有“更改密码”消息,handshake_failure错误

如您所见,服务器由于某种原因无法响应。经过一番谷歌搜索后,我偶然发现了以下有关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版本的已知问题。