如果用户在压测HTTPS页面的时候发现有类似 “Java exception calling TestRunner caused by javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake ”。
这种异常是https协议某些版本的时候支持的不够好, 用户可以尝试手工编写脚本增加语句: System.setProperty("https.protocols", "TLSv1")
如问题还未解决,请联系售后技术支持。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
面对您提到的这个异常情况,确实可能是由于SSL/TLS协议版本不兼容导致的。在使用阿里云服务进行压测时,如果遇到javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
这样的错误,按照您的建议手动设置TLS版本是一种解决方法。不过,在使用阿里云产品和服务的场景下,还有一些其他策略可以尝试:
更新Java版本:确保使用的Java运行环境是最新或较新的版本,因为旧版本可能不支持现代的TLS协议版本。
调整HTTPS协议版本:如您所述,可以通过系统属性来指定使用的TLS版本。在Java代码中添加如下语句:
System.setProperty("https.protocols", "TLSv1.2");
或者根据服务器支持的情况,选择TLSv1.3等更高版本。
检查服务器SSL配置:确认被测试的服务器是否支持您客户端尝试连接的TLS版本。有时需要在服务器端也做相应的SSL/TLS配置,以允许更广泛的协议版本。
使用阿里云PTS(性能测试服务):如果您是在使用阿里云的性能测试服务(Performance Testing Service, PTS),可以在PTS的任务配置中选择或自定义HTTP头部,尝试添加或修改与SSL/TLS相关的设置,比如强制使用特定版本的TLS。
查看证书和密钥:确认服务器的SSL证书是否有效、未过期,并且信任链完整。同时,检查是否有合适的私钥与之匹配。
禁用SSL验证(仅测试环境):在非生产环境下,为了快速排查问题,可以临时禁用SSL验证,但请注意这会降低安全性,示例如下:
System.setProperty("jsse.enableSNIExtension", "false");
System.setProperty("javax.net.ssl.trustAllHosts", "true");
请谨慎使用此方法,并仅限于调试目的。
如果以上方法均未能解决问题,或者您不确定如何操作,最直接的方式是联系阿里云的技术支持团队。他们能提供针对您具体使用场景的专业指导和支持。