使用loadrunner对https协议(单双向SSL)的web端性能测试

2015年06月19日 09:30:02阅读数:12071

1.项目背景

1.1 单双向SSL的含义及部署

单向SSL即我们说到的https协议。

特点是,浏览器需要请求验证服务器证书;

基本含义是:一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。

双向SSL顾名思义就是双方都需要验证证书的协议,浏览器首先向服务端请求证书,然后服务器端需要向浏览器请求目前登陆用户的个人证书验证。

1.2 系统的基本部署

单向SSL交互过程:


使用单向SSL时,仅通过虚拟主机2,请求即可传递到tomcat完成整个通信过程。

双向SSL交互过程:

使用双向SSL时,请求先到虚拟主机2,由虚拟主机2rewrite至虚拟主机3,再由虚拟主机3与tomcat进行通信。同时在虚拟主机3,会将用户证书放在参数中随请求一起传递给tomcat。

1.3 测试背景

为了配合使用证书系统,本系统上所有请求将更改为使用https进行访问。同时为了增加安全性以及对本系统核心操作的控制,需要对请求进行分级控制,即普通操作为单向SSL,核心操作为双向SSL。

需要交互的系统:OSCP服务器,用于在线验证证书状态。

2.测试目的

主要验证系统:

(1). 评估在预期用户规模的情况下,系统是否响应正常。

(2). 评估系统在应用了单双向SSL之后响应的区别,关联服务器是否会影响该系统的性能情况。

(3). 在逐渐增加负载的情况下,分析系统瓶颈。

(4). 在压力情况下系统的表现。

(5). 在长时间运行该模块是否会出现系统性能异常。

3.测试分析

3.1场景分析

假设根据系统分析,主要测试两个场景,第一是单向SSL,登陆场景,第二是双向SSL,对下载文件功能。假设预估的并发用户量都是10人。


用户行为

操作

预估并发用户量

下载文件

选择指定文件->下载

10

登陆

填写用户名和密码->登陆->加载登陆后界面

10


3.2测试模块分析

负载测试:主要测试各个场景在正常情况下是否运转,是否系统响应正常。并且对比应用了单双向SSL之后的响应差别,关注到关联服务器是否会影响该系统的性能情况。

      并且在不断增加负载的情况下,分析系统的瓶颈。

压力测试:主要考察在压力情况下系统的表现,是否会出现性能异常,以及出现异常之后是否能及时回复并给与友好性提示。

长时间稳定性测试:主要测试系统在预期的用户量下,在一段时间内,是否能够稳定的响应。重点关注下内存是否泄漏。

4.测试执行

基本步骤:录制LoadRunner脚本->执行LoadRunner场景->进行分析

在测试执行里主要说一下录制脚本时遇到的问题,关于loadrunner对于单双向SSL脚本录制的问题。

主要从以下几个方面来说,如何将浏览器导出的证书.crt转换为.pem,如何录制单向SSL脚本,如何录制双向SSL脚本。


4.1 如何将浏览器导出的证书.crt转换为.pem


所有的blog上都说用openssl转换。那么哪里有openssl

答:这个再linux下面一般都带的,没有的话yuminstall openssl 就可以了

步骤是什么?

答: pfx提取公钥私钥方法如下:    

           openssl pkcs12 -in server.pfx -nodes -out temp.pem  //生成临时文件:temp.pem

           openssl rsa -in temp.pem -out server.key         //生成服务器私钥 server.key

           openssl x509 -in temp.pem -out server.pem    //生成服务器公钥 server.pem


4.2 如何录制单向SSL脚本?

只需要设置LoadRunner即可,LR中可以直接录制https脚本,只需在create new scripts->web(HTTP/HTML)->start record->options->netword下的port mapping,设置为winnetlevel data

4.3 如何录制双向SSL脚本?

由于LR的机制是利用LR模拟浏览器与服务器进行交互,所以证书需要安装在





loadrunner中对https证书的配置

1、先访问要压测的网站地址,从浏览器中将证书导出,或者直接找开发人员要这个证书;

     一般证书是cer格式;

     

2、因为loadrunner只支持pem格式的证书,所以要将证书转换格式;

      这里就需要用到openssl工具,进入cmd命令窗口,进入openssl的安装目录,输入命令将证书转换为pem格  式,详情请参考上面两篇博文;

3、得到pem格式的证书之后,在loadrunner->vuser窗口->tools->Port Mapping页面进行设置:

     先点击New Entry按钮,如下图所示:

                        

进入Entry配置窗口,进行配置,如下图所示

                       

4、打开run-time settings>preferences 
 
将winlnet replay instead of scokets(windows noly) 打勾(设置这一项则数字证书在浏览器中获取);如果参数化数字证书,则此项不用打勾。

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");