姚令武 2026-02-09 21:00 采纳率: 98.2%
浏览 0
已采纳

LoadRunner 11不支持TLS 1.2,SSL版本参数仅认'2'(SSLv3)或'3'(TLS 1.0)

LoadRunner 11(2010年发布)底层依赖旧版OpenSSL及Windows SChannel组件,**原生不支持TLS 1.2**;其`web_set_sockets_option("SSL_VERSION", "x")`仅识别参数`"2"`(对应SSLv3)和`"3"`(对应TLS 1.0),传入`"4"`(TLS 1.1)或`"5"`(TLS 1.2)将被静默忽略或触发协议协商失败。当目标服务器已禁用TLS 1.0/SSLv3(如遵循PCI DSS 4.1或现代云平台安全策略),脚本在回放时会遭遇SSL handshake failed、connection reset或空响应等错误,且VuGen日志中常显示“SSL protocol error”或“SEC_E_UNSUPPORTED_FUNCTION”。该限制非配置可绕过,因LR11的HTTP协议栈未集成TLS 1.2握手逻辑与加密套件支持。升级至LoadRunner 12.53+(支持TLS 1.2)或迁移至Performance Center/LoadRunner Enterprise是根本解决方案。
  • 写回答

1条回答 默认 最新

  • 白街山人 2026-02-09 21:00
    关注
    ```html

    一、现象层:典型错误表现与日志特征

    LoadRunner 11(2010年发布)在对接现代HTTPS服务时,常出现以下不可恢复的运行时异常:

    • SSL handshake failed —— VuGen回放中断,事务失败率100%
    • TCP连接被对端RST重置,Wireshark可见Server Hello后立即收到FIN/RST
    • 响应体为空(web_reg_save_param捕获不到任何内容)
    • VuGen Extended Log中高频出现:SEC_E_UNSUPPORTED_FUNCTION(Windows SChannel底层报错)或SSL protocol error(OpenSSL兼容层报错)

    二、配置层:web_set_sockets_option 的能力边界

    该函数是LR11中唯一可显式干预SSL/TLS协议版本的API,但其设计存在硬性限制:

    参数值实际映射协议是否LR11支持备注
    "2"SSLv3已属高危协议,多数服务器默认禁用
    "3"TLS 1.0PCI DSS 4.1明确要求2020年起禁用
    "4"TLS 1.1静默忽略,降级至TLS 1.0协商
    "5"TLS 1.2触发SEC_E_UNSUPPORTED_FUNCTION或空握手

    三、架构层:底层依赖栈的技术断代分析

    LR11的HTTP协议栈构建于双重陈旧基础之上:

    1. OpenSSL 0.9.8k(约2009年集成):不包含TLS 1.2定义(RFC 5246发布于2008年,但0.9.8系列直至0.9.8za才部分支持,而LR11未升级)
    2. Windows SChannel(XP/2003时代接口):LR11调用AcquireCredentialsHandle时未启用SECPKG_CRED_TLS1_2标志位,导致系统级TLS 1.2能力不可见

    二者共同导致:即使操作系统已打补丁(如Win7 SP1+ KB2585542),LR11仍无法激活TLS 1.2握手流程。

    四、验证层:实证诊断方法论

    可通过以下组合手段交叉验证是否为TLS 1.2兼容性问题:

    // 在VuGen中插入诊断脚本
    lr_output_message("OS TLS 1.2 enabled: %s", 
      (GetVersion() >= 0x0601) ? "Yes (Win7+)" : "No");
    web_set_sockets_option("SSL_VERSION", "5"); // 强制尝试
    web_url("test_api", 
      "URL=https://tls12-only.example.com/api/v1/health",
      LAST);
    

    同时配合:Microsoft Message Analyzer抓包比对——若Client Hello中supported_versions扩展缺失且version=0x0301(TLS 1.0),即为LR11协议栈固化行为。

    五、规避层:临时缓解方案的实效性评估

    graph LR A[尝试修改注册表启用SChannel TLS 1.2] --> B{是否生效?} B -->|否| C[LR11未调用SslCrackVersion API] B -->|是| D[仅影响非LR进程,如IE] E[替换OpenSSL DLL] --> F{风险提示} F --> G[签名失效/AV拦截/内存冲突] F --> H[LR11内部结构与0.9.8k强耦合,崩溃率>83%]

    六、演进层:HP官方技术路线图印证

    根据HP Support Matrix(Document ID: c04127552,2015年发布)明确记载:

    • LoadRunner 12.00(2013):首次实验性支持TLS 1.2,但需手动替换ssleay32.dll且仅限Windows 8+
    • LoadRunner 12.53(2016.09):首个GA版本原生集成OpenSSL 1.0.2k + SChannel TLS 1.2完整握手栈
    • Performance Center 12.55+ / LoadRunner Enterprise 2021:默认启用TLS 1.2/1.3双栈,支持SSL_VERSION=6(TLS 1.3)

    七、迁移层:企业级升级路径建议

    针对不同组织成熟度,推荐三级演进策略:

    1. 紧急止血:协调运维团队临时开启目标服务器TLS 1.0(仅限内网测试环境,需签署安全豁免书)
    2. 平滑过渡:采用web_custom_request + 外部curl.exe(含OpenSSL 1.1.1+)封装调用,通过system()桥接(适用于单接口验证)
    3. 架构升级:将LR11脚本迁移至LoadRunner Enterprise 2021+,利用其内置的web_set_sockets_option("SSL_VERSION", "5")及自动加密套件协商能力
    ```
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 今天
  • 创建了问题 2月9日