起因:
公司的测试环境配置的2fa,需要SSL认证才能访问。
解决方案一:
修改jmeter.properties里面关于ssl的配置,jmeter.properties的文件路径如下:
apache-jmeter-5.1injmeter.properties
找到下面这句,把false改为true。下面这句原本默认前面有个“#”号,需要把“#”号去掉。
server.rmi.ssl.disable=false
解决方案二:
通过对比 SSLSocketImpl源码以及报错的debug信息,我们发现原因是:
1. jdk 1.8和 jmeter 5.1并不能很好的兼容,发出去的是 TLS v1, 但是回来的是 TlS v1.2,协议不匹配。
2. 我们的证书,是用的AES-256加密的,所以密钥长度是AES 256 , 而JDK默认的密钥支持位数是128位,需要在java.security中进行扩展,让其支持256位密钥长度。
具体做的步骤:
1. Downgrade jdk的版本从jdk v1.8降低到jdk v1.7.0_80
2. Downgrade jmeter的版本从v5.1到v2.13
3. 下载 http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html 并下载local_policy.jar和US_export_policy.jar,并同名覆盖掉 $JAVA_HOME/jre/lib/security下的同名文件即可。