JMeter录制Oracle Fusion脚本后二次登录遇checksum format error求助
Oracle Fusion二次SSO登录报checksum format error的排查与解决
可能的原因
- 证书链导入不规范:合并的三级信任链顺序错误,或JKS文件中未正确标记所有证书为信任状态,导致JMeter无法验证二次登录请求的SSL证书,进而影响checksum生成或校验。
- JMeter SSL配置未生效:修改的属性文件不对、路径错误或未重启JMeter,导致自定义TrustStore未被加载,SSL上下文与浏览器不一致。
- checksum参数未正确关联:二次登录的checksum通常是动态生成的(基于会话ID、时间戳、证书信息等),若未从响应中正确提取或未模拟JS生成逻辑,会导致参数不匹配。
- SSL协议/加密套件不匹配:浏览器使用的TLS版本(如TLS1.3)或加密套件与JMeter默认配置不同,导致握手失败或请求参数生成异常。
解决办法
重新规范导入证书链
- 用OpenSSL导出完整证书链,按服务器证书→中间CA→根CA的顺序合并为单个PEM文件。
- 使用
keytool命令导入到JKS:
导入过程中确认所有证书均被标记为信任。keytool -importcert -file full_chain.pem -alias fusion_certs -keystore fusion_truststore.jks -storepass changeit - 验证JKS内容:
确保三个证书都存在,且类型为keytool -list -v -keystore fusion_truststore.jkstrustedCertEntry。
确保JMeter SSL配置生效
- 编辑JMeter安装目录下的
system.properties文件,添加:javax.net.ssl.trustStore=/绝对路径/fusion_truststore.jks javax.net.ssl.trustStorePassword=changeit javax.net.ssl.trustStoreType=JKS - 重启JMeter,添加Debug Sampler查看
javax.net.ssl.trustStore属性,确认路径正确加载。
修复checksum参数关联
- 抓包对比浏览器二次登录请求与JMeter请求,定位checksum参数的来源:
- 若来自首次登录响应的隐藏字段/Cookie,用正则表达式或CSS Selector提取后替换到二次请求。
- 若为JS动态生成,分析JS中的算法(如HMAC-SHA256),用JSR223 Sampler提取必要参数(如sessionId、timestamp)模拟生成。
- 确保checksum参数在二次请求中完全匹配浏览器发送的值,无格式或大小写错误。
匹配浏览器SSL配置
- 在
system.properties中添加协议配置:https.default.protocol=TLSv1.3 https.socket.protocols=TLSv1.2,TLSv1.3 - 若需要,进一步指定加密套件(可从浏览器抓包获取),添加:
https.cipherSuites=TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,...
检查会话Cookie
- 确保JMeter的HTTP Cookie Manager未启用“Clear cookies each iteration”,保留首次登录的所有会话Cookie(如SSO token、session ID)。
- 对比浏览器Cookie与JMeter Cookie Manager中的值,确保无遗漏或过期。
内容的提问来源于stack exchange,提问作者vallabh patil
相关产品推荐
相关产品推荐

