jmeter 307与Received fatal alert: handshake_failure

本文介绍JMeter访问Post接口时遇到的307重定向和SSLHandshakeException问题,通过排查证书和版本调整,提出从更换JDK版本1.8.0.144到1.8.0_311来解决此问题的方法。

jmeter访问post接口报错:javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

初次使用时出现如下情况

 1、响应码报307重定向
 2、响应数据报javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

解决方法

  1、一开始以为是证书问题,尝试后发现不是这个问题;有需要可以试试以下地址:https://blog.youkuaiyun.com/gynumber1/article/details/81557564
  2、直接修改jdk版本,我的版本原来是1.8.0.144,换成1.8.0_311直接解决;
在使用 JMeter 进行网络请求测试时,出现 `javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure` 错误,通常表明客户端(JMeter服务器在 SSL/TLS 握手过程中未能达成一致,导致连接无法建立。以下是一些可能的原因及对应的解决方法。 ### 常见原因 1. **SSL/TLS 协议版本不兼容** 客户端和服务器可能支持的协议版本不同,例如服务器仅支持 TLS 1.3,而 JMeter 使用的 JDK 可能默认禁用了该协议,或仅支持 TLS 1.2 及以下版本。 这种情况可以通过修改 JDK 的安全配置文件来启用或禁用特定协议版本来解决[^3]。 2. **加密套件不匹配** JMeter 客户端和服务器可能没有共同支持的加密套件(Cipher Suites),导致握手失败。可以通过在 JMeter 的 JVM 参数中指定支持的加密套件来解决该问题。 3. **证书问题** 服务器使用的 SSL 证书可能未被客户端信任,例如自签名证书、证书过期或证书链不完整。可以尝试将服务器证书导入 JMeter 的信任库(truststore)中。 4. **JDK 版本限制** 使用的 JDK 版本可能默认禁用了一些较新的协议或加密算法。例如,在 JDK 8 中,默认可能禁用了 TLS 1.2 或 TLS 1.3,需要手动启用。 ### 解决方法 #### 1. 修改 JDK 的 TLS 配置 编辑 `jre/lib/security/java.security` 文件,找到 `jdk.tls.disabledAlgorithms` 配置项,删除或注释掉不希望禁用的协议,例如: ```text # jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1 ``` 保存后重启 JMeter 以使更改生效[^3]。 #### 2. 指定 JMeter 使用的协议和加密套件 可以在 JMeter 启动脚本中添加如下 JVM 参数,以指定启用的协议和加密套件: ```bash -Dhttps.protocols=TLSv1.2,TLSv1.3 -Dhttps.cipherSuites=TLS_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ``` 这将强制 JMeter 使用特定的协议和加密套件进行连接。 #### 3. 导入服务器证书到信任库 使用 `keytool` 工具将服务器证书导入 JMeter 使用的 JDK 的信任库中: ```bash keytool -import -alias server-cert -file server.crt -keystore $JAVA_HOME/jre/lib/security/cacerts ``` 输入默认密码 `changeit`,然后确认导入证书。 #### 4. 升级 JDK 版本 如果使用的是较旧的 JDK 8,建议升级至 JDK 11 或更高版本,以获得更好的 TLS 支持和安全性。 #### 5. 配置 JMeter 的 Keystore 在 JMeter 的配置中指定客户端证书(如需要双向 SSL),可以在 `system.properties` 中配置如下参数: ```properties javax.net.ssl.keyStore=/path/to/keystore.jks javax.net.ssl.keyStorePassword=yourpassword javax.net.ssl.keyStoreType=JKS ``` ### 示例:JMeter SSL 配置 在 `jmeter/bin/system.properties` 文件中添加以下内容以启用调试日志,帮助排查问题: ```properties javax.net.debug=ssl:handshake ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值