使用LoadRunner编写JSON格式REST API脚本遇证书错误求助
解决LoadRunner 2022 REST API脚本的-27493证书错误
问题说明
用LoadRunner 2022编写JSON格式REST API脚本时,触发错误:
Action.c(11): Error -27493: Client authentication certificate needed but is not available. Use "web_set_certificate" or "web_set_certificate_ex" to specify a certificate. [MsgId: MERR-27493]
相同请求在JMeter 5.5中无需额外证书即可正常运行,且已为LoadRunner配置web_set_user基础认证,请求头与JMeter完全一致,需解决该错误以获取HTTP 200响应。
可行解决方法
1. 开启LoadRunner自动证书选择
LoadRunner的SSL处理逻辑和JMeter存在差异,尝试开启自动证书匹配:
- 打开脚本的Runtime Settings,依次进入
Internet Protocol > Preferences > SSL - 勾选
Automatically select client certificate选项 - 重新运行脚本,验证是否能自动调用系统证书库中的可用证书
2. 导出并配置JMeter隐式使用的证书
JMeter可能自动调用了系统或浏览器的客户端证书,可导出后在LoadRunner中配置:
- 用浏览器访问目标API地址,导出客户端认证证书(选择PKCS#12格式,设置提取密码)
- 在LoadRunner脚本的请求前添加
web_set_certificate_ex函数,示例代码:web_set_certificate_ex( "CertFilePath=C:\\certs\\client_cert.pfx", "CertPassword=your_pfx_password", "CertFormat=PFX", LAST);
3. 确认基础认证的执行顺序
确保web_set_user函数在请求语句前调用,参数准确:
web_set_user("api_username", "api_password", "target_api_host:443");
若API同时要求基础认证和客户端证书,可调整顺序,将证书配置函数放在认证函数之前执行。
4. 排查代理与证书信任问题
- 关闭LoadRunner可能使用的拦截代理(如Fiddler),避免代理干扰SSL握手
- 在Runtime Settings的SSL配置中,将目标API的根证书添加至信任列表,防止证书链验证失败
5. 对比SSL握手流程定位差异
用Wireshark抓取JMeter和LoadRunner的请求包,对比SSL握手阶段:
- 查看JMeter是否在握手时发送了客户端证书,以及证书的来源
- 若JMeter未发送证书但请求成功,需联系API服务端确认是否对LoadRunner这类工具存在特殊的证书验证逻辑
内容的提问来源于stack exchange,提问作者Nike
相关产品推荐
相关产品推荐

