lr使用linux Generator测试https莫名报 SSL protocol error when attempting to connect with host

  接收一个性能测试任务,各种原因需要使用linux agent产生压力。诡异的事发生了,同样脚本windows回放成功,使用linux agent报如下错误,脚本回放失败。

Action.c(33): Error -27778: SSL protocol error when attempting to connect with host "xxx.xxx.xxx" 

   各种查找原因:

  方法1:lr设置如下,无效因为只在windows生效linux根本不起作用

runtime setting -> Internet protocol->perference 选中 WinINet replay instead of sockets

  方法2:在脚本添加如下内容,无效因为此命令只是告诉lr使用ssl版本

web_set_sockets_option("SSL_VERSION","TLS");

  方法3:根据错误提示修改各种ssl版本,F1后根据文档修改“The SSL version preferences 2, 3, 2 and 3, TLS.”,依然无效

  方法4:怀疑 nginx ssl配置问题,乱加了一通依然无效

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

  一通乱搞已经半天过了去,没办法只能放弃直接压力80,好在需求压力不大nginx不是问题。

  今天忽然有时间继续解决,居然让我蒙对了。

  第一步:通过 fiddler + postman 转lr脚本的方式,看看是不是我写的脚本有问题。问题依然存在。

  第二步:使用 tcpdump 抓包由于本人不会使用tcpdump看报文,没办法只能安装 wireshark 类工具查看。悲剧又开始了凭着老经验自认为win10上装不上wireshark,在win7虚拟机上安装,各种vc库报错。没办法在win10上安装了一下,居然成功了。

  第三步:开始抓包,先用windows产生压力抓个包,再用linux产生压力抓个包。

  windows没问题的包

   linux上有问题包,可以看出hello后服务器报错了,提示“TLSv1 Record Layer: Alert (Level: Fatal, Description: Handshake Failure)”这个提示没啥用,还是不知道啥错误。

 

   第四步:没办法只能看握手报文了

   windows没问题的

  linux上有问题的报文,可以看除两个唯一的区别就是选用的加密算法不同

  第五步:既然问题找到了那解决就简单了。可以有两个方式 a)在 nginx 中配置然他支持加密算法。b)在linux agent上配置让他用和windows一样的加密算法

  第六步:在nginx 服务器上,将原来的

ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;

  改为如下内容,再使用linux agent回访成功,这种改法还是有问题,第一改后的加密算法有安全漏洞,第二两个算法对性能测试结论会有影响。今天累了改天有时间再看吧。

ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

  

  

原文地址:https://www.cnblogs.com/rslai/p/10008783.html