开发者社区 问答 正文

性能测试压测HTTPS报错Remote host closed connection during handshake

如果用户在压测HTTPS页面的时候发现有类似 “Java exception calling TestRunner caused by javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake ”。

    这种异常是https协议某些版本的时候支持的不够好, 用户可以尝试手工编写脚本增加语句: System.setProperty("https.protocols", "TLSv1")

    



如问题还未解决,请联系售后技术支持。

展开
收起
猫饭先生 2017-10-31 14:18:41 18356 分享 版权
阿里云 AI 助理回答

面对您提到的这个异常情况,确实可能是由于SSL/TLS协议版本不兼容导致的。在使用阿里云服务进行压测时,如果遇到javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake这样的错误,按照您的建议手动设置TLS版本是一种解决方法。不过,在使用阿里云产品和服务的场景下,还有一些其他策略可以尝试:

  1. 更新Java版本:确保使用的Java运行环境是最新或较新的版本,因为旧版本可能不支持现代的TLS协议版本。

  2. 调整HTTPS协议版本:如您所述,可以通过系统属性来指定使用的TLS版本。在Java代码中添加如下语句:

    System.setProperty("https.protocols", "TLSv1.2");
    

    或者根据服务器支持的情况,选择TLSv1.3等更高版本。

  3. 检查服务器SSL配置:确认被测试的服务器是否支持您客户端尝试连接的TLS版本。有时需要在服务器端也做相应的SSL/TLS配置,以允许更广泛的协议版本。

  4. 使用阿里云PTS(性能测试服务):如果您是在使用阿里云的性能测试服务(Performance Testing Service, PTS),可以在PTS的任务配置中选择或自定义HTTP头部,尝试添加或修改与SSL/TLS相关的设置,比如强制使用特定版本的TLS。

  5. 查看证书和密钥:确认服务器的SSL证书是否有效、未过期,并且信任链完整。同时,检查是否有合适的私钥与之匹配。

  6. 禁用SSL验证(仅测试环境):在非生产环境下,为了快速排查问题,可以临时禁用SSL验证,但请注意这会降低安全性,示例如下:

    System.setProperty("jsse.enableSNIExtension", "false");
    System.setProperty("javax.net.ssl.trustAllHosts", "true");
    

    请谨慎使用此方法,并仅限于调试目的。

如果以上方法均未能解决问题,或者您不确定如何操作,最直接的方式是联系阿里云的技术支持团队。他们能提供针对您具体使用场景的专业指导和支持。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答