java - JMeter javax.net.ssl.SSLHandshakeException 间歇性
问题描述
我们正在运行一个 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 警报:致命,handshake_failure
%% 无效:[Session-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:
server selection: enforce server preferences
3-- (key: RSA) RSA_WITH_RC4_128_SHA 3--
(key: RSA) RSA_WITH_AES_128_CBC_SHA 3--
(key: RSA ) RSA_WITH_AES_256_CBC_SHA 3--
(key: RSA) RSA_WITH_3DES_EDE_CBC_SHA
TLSv1.0: 同上
TLSv1.2:
服务器选择: 强制服务器首选项
3-- (key: RSA) RSA_WITH_RC4_128_SHA 3--
(key: RSA) RSA_WITH_AES_128_CBC_SHA 3--
(key: RSA) RSA_WITH_AES_256_CBC_SHA 3--
(key: RSA) RSA_WITH_3DES_EDE_CBC_SHA 3--
(key: RSA) RSA_WITH_AES_128_CBC_SHA256
3--(密钥:RSA)RSA_WITH_AES_256_CBC_SHA256
关于可能出现什么问题的任何想法?
解决方案
我无法真正找出确切的原因,但现在知道可能出了什么问题。按照 Dave 的建议,我打开了 SSL 调试并查看了所有日志,并将失败的请求与成功的请求进行了比较。
对于失败的请求,这是我在日志中看到的:
- 客户端发送 Hello & Server 发送 Hello
- 服务器发送证书和服务器你好完成
- 客户端密钥交换和更改密码规范
- 完成的
- 此处失败并且来自服务器的 No Change Cipher 消息,handshake_failure 错误
如您所见,服务器由于某种原因无法响应。经过一番谷歌搜索后,我偶然发现了以下有关 f5 SSL 问题的论坛。我们的服务也通过 f5。我无法确认,因为我对我们的服务器端没有太多控制权,但下面的问题看起来很相似:
https://devcentral.f5.com/questions/big-ip-proxy-ssl-121-handshake-failure-47464
推荐阅读
- python - 如何使用 slack-api pin.add 方法
- php - 试图理解 Symfony ManyToMany 错误
- twig - Form builder and theming variables in symfony 4
- javascript - How to extract comments from Object literals in javascript
- python - Python日志记录将所有级别的日志写入文件
- javascript - 使用 fetch 或 http.get 方法的基本授权
- javascript - 为什么这是最早的日期?
- javascript - Mathjax 函数打印为 laTex
- python - 为什么我用箱线图绘制折线图时会向左移动?
- c - 拼写器 - 卸载特里 - 功能无法正常工作