热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Loadrunner执行https报错Action.c(7):Error27778:SSLprotocolerrorwhenattemptingtoconnectwithhos

此文章大部分为转载文章一、问题说明Loadrunner回放包含https的请求时,报一下错误:Action.c(7):Error-27778:SSLprotocolerrorwhe

此文章大部分为转载文章

一、问题说明

Loadrunner回放包含https的请求时,报一下错误:

Action.c(7): Error -27778: SSL protocol error when attempting to connect with host "blog.csdn.net"

二、发生原因

Loadrunner默认发送是通过sockets(将http转换为sockets)发送的,而sockets默认SSL的版本为SSL2和SSL3。HTTPS协议录制的脚本以SSL3版本回放时使sockets端口连接失败,会被服务器拒绝连接。

Loadrunner执行https报错Action.c(7): Error -27778: SSL protocol error when attempting to connect with hos

三、解决方案


1、run-time settings -->preferences-->advanced-->WININET replay instead of Sockets,勾选保存设置后,再次运行就不会报错了(设置之后使用winlnet的引擎回放脚本,但此方法仅适用于windows)

Loadrunner执行https报错Action.c(7): Error -27778: SSL protocol error when attempting to connect with hos

作者原版内容:

碰到loadrunner https脚本回放失败,通过多次尝试,无意中找到答案,觉得过程有点意思,特与各位交流。 •1.1.      录制https脚本 采用http协议,url: https://crm.cn.alibaba-inc.com/, 默认选项。生成的脚本如后: 
web_url("crm.cn.alibaba-inc.com", 
             "URL=https://crm.cn.alibaba-inc.com/", 
             "Resource=0", 
             "RecCOntentType=text/html", 
             "Referer=", 
             "Snapshot=t1.inf", 
             "Mode=HTML", 
             LAST); 
•1.2.      回放失败 打开extend log,把advance trace均打开,log如后: 
Action.c(6): web_url("crm.cn.alibaba-inc.com" started     [MsgId: MMSG-26355] 
Action.c(6): t=407ms: Connecting to host 60.190.232.107:443         [MsgId: MMSG-26000] 
Action.c(6): t=426ms: Connected socket from 10.0.68.48:3764 to 60.190.232.107:443 in 13 ms  [MsgId: MMSG-26000] 
Action.c(6): SSL3 alert read:fatal failure 
      [MsgId: MMSG-26000] 
Action.c(6): SSL_connect:error in SSLv2/v3 read server hello A 
      [MsgId: MMSG-26000] 
Action.c(6): Error -27778: SSL protocol error when attempting to connect with host "crm.cn.alibaba-inc.com"  [MsgId: MERR-27778] 
Action.c(6): t=443ms: Closed connection to crm.cn.alibaba-inc.com:443 after completing 0 requests    [MsgId: MMSG-26000] 
Action.c(6): t=445ms: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure        [MsgId: MMSG-26000] 
Action.c(6): web_url("crm.cn.alibaba-inc.com" highest severity level was "ERROR", 0 body bytes, 0 header bytes     [MsgId: MMSG-26388] 
•1.3.      解决过程 第一层想法: 

Ø support.mercury.com,以关键词 ssl,https均未有相近结果。但肯定loadrunner支持SSL。
Ø 去51testing.com找到有类似问题,但未有解决方案。
Ø 查 function reference,并没有看到与ssl特别密切的函数,仅有web_set_sockets_option沾边。 查online book,有些关于ssl 的说明。
第二层想法:  找了一些ssl 握手过程的资料(如rfc)。了解到client/server握手过程中,内容动态变化。 经过ethereal抓包,确信loadrunner每次回放均采用旧值,导致handshake failure 。初步计划下载openssl的握手源代码,包装成dll并集成到loadrunner。 
考虑到代价高昂,再google  ssl+loadrunner 。随手看到 http://www.wilsonmar.com/1loadrun.htm:If an Web SSL script works in the Controller but not vuGen, try changing the controller's Runtime Settings Preferences to "WININET replay instead of Sockets".  不类似,但一尝试,问题解决! 
•1.4.      解决方法 在vugen 内, run-time settings->preferences->勾上WININET replay instead of Sockets。 
•1.5.      原理 
vugen  user's  guide 提到 Advanced Web run-time options 

WinInet Replay (instead of Sockets): Instructs VuGen to use the WinInet 

replay engine. VuGen has two HTTP replay engines: Sockets-based (default) 

or WinInet based. The WinInet is the engine used by Internet Explorer and 

it supports all of the features incorporated into the IE browser. The 

limitations of the WinInet replay engine are that it is not scalable, nor does 

it support UNIX. In addition, when working with threads, the WinInet 

engine does not accurately emulate the modem speed and number of 

connections. 

VuGen's proprietary sockets-based replay is a lighter engine that is scalable 

for load testing. It is also accurate when working with threads. The 

limitation of the sockets-based engine is that it does not support SOCKS 

proxy. If you are recording in that type of environment, use the WinInet 

replay engine. 

从上可知,winInet replay 支持集成如IE的所有特征。回放时,底层的winInet函数完成SSL握手过程。同时每种mode均有优劣。 

另外,找到一些说明: 

Any Web script can be replayed in LoadRunner in two modes: 

1. WinInet Mode - Using the WinInet.dll provided by Internet Explorer. 
2. Socket mode - Using the Sockets Replay engine developed by Mercury. 

•1.6.      启示 
Ø 有必要再review 一次loadrunner的文档。Loadrunner还是一个"黑匣子",有很多的技术细节不为人知!
Ø 关注每一个选项,尤其平常少用的。也许就是一个不起眼的选项,节省无数的时间


推荐阅读
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 本文详细解析了ASP.NET 2.0中的Callback机制,不仅介绍了基本的使用方法,还深入探讨了其背后的实现原理。通过对比Atlas框架,帮助读者更好地理解和应用这一机制。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • WinMain 函数详解及示例
    本文详细介绍了 WinMain 函数的参数及其用途,并提供了一个具体的示例代码来解析 WinMain 函数的实现。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
author-avatar
她们都叫我哥
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有