在测试https请求的时候发现无法通过,并且报错
Action.c(31): Error -27780: [GENERAL_MSG_CAT_SSL_ERROR]connect to host "xxxxxxxx" failed: [10054] Connection reset by peer [MsgId: MERR-27780]
如图:
Loadrunner默认发送是通过sockets(将http转换为sockets)发送的,而sockets默认SSL的版本为SSL2和SSL3。HTTPS协议录制的脚本以SSL3版本回放时会使sockets端口连接失败,会被服务器拒绝连接。
方法一:设置Run-time Setting
找到Internet Protocol - Preferences - Advanced,勾选“winlnet replay instead of sockets(windows only)”选项,即可。
如图:
勾选这个选项后,LR就会使用winlnet的引擎回放脚本(只有windows使用)。设置这一项则数字证书在浏览器中获取;如果参数化数字证书,则此项不用打勾。
方法二:缺少https证书
解决方案:
1. 得到web网页的.cer证书
2. 借助openssl转换证书的格式为perm
3. loadrunner配置
======================================================
具体:
1. Google浏览器中先得到web网页的.cer证书
这边选择的格式需要记住,后续需要转换。
选择要保存的路径和文件名,完成.cer证书的导出。
2. openssl 转换证书格式
LR只支持.perm格式的证书,需要借助openssl。
① 下载openssl
官网的openssl貌似是win32的,win64不兼容
有时间也可以自己编译折腾一下(需要安装Perl、VS10、openssl),可以根据以下的教程来做:http://blog.csdn.net/houjixin/article/details/25806151
② 转换
打开cmd,运行openssl
中间打了马赛克的就是转换前后证书路径文件,一定要加上路径。
- 路径不对会如下报错:
- 转换的命令和cer文件的编译格式有关系,如果不对,会报如下错误:
以下是openssl命令的格式:
3. Loadrunner设置证书
https的端口号就固定的443。
5、配置完毕后,重新录制脚本,正常情况下,录制的脚本前面会出现证书信息,如下所示:
web_set_certificate_ex("CertFilePath=admin149.pem", "CertFormat=PEM", "KeyFilePath=admin149.pem", "KeyFormat=PEM", "Password=123456", "CertIndex=1",
LAST);
6、若再报:GENERAL_MSG_CAT_SSL_ERROR: Connection failed to host during replay of the script
放在 web_set_certificate_ex 前面
web_set_sockets_option("SSL_VERSION","TLS");
备注:
若出现:安全警报:该站点安全证书不可用,是否继续。
是因为该证书是开发自己弄的,并不能在信任机构中找到该证书,此时就是这个证书没法用。那么loadrunner就不能用了