JMeter安卓原生应用测试录制登录时报Trust anchor for certification path not found错误
问题原因
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.报错的核心是你测试的移动端原生应用不信任JMeter录制代理生成的自签名根CA证书。安卓7.0及以上系统默认仅信任系统预装的CA证书,你手动安装的JMeter证书属于用户级证书,原生应用默认不会信任这类证书,因此HTTPS请求校验失败。
解决方案
方案1:修改测试应用的网络安全配置(无需root,适用于能拿到应用源码的场景)
- 打开安卓项目的
AndroidManifest.xml,在application节点添加属性:
android:networkSecurityConfig="@xml/network_security_config"- 在项目
res/xml目录下新建network_security_config.xml文件,写入以下配置允许信任用户证书:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config> <trust-anchors> <!-- 信任系统预装CA证书 --> <certificates src="system" /> <!-- 信任用户安装的CA证书,用于JMeter录制 --> <certificates src="user" /> </trust-anchors> </base-config> </network-security-config>- 重新打包应用安装到设备后即可正常录制。
- 打开安卓项目的
方案2:将JMeter证书安装为系统级证书(无需修改应用,适用于root设备/模拟器)
- 从JMeter安装目录的
bin文件夹下导出ApacheJMeterTemporaryRootCA.crt证书,先手动安装到设备的用户证书目录 - 用openssl命令转换证书为系统要求的格式,执行:
得到一串哈希值,例如openssl x509 -inform PEM -subject_hash_old -in ApacheJMeterTemporaryRootCA.crt | head -1e8d99549,将证书文件重命名为e8d99549.0
3. 将重命名后的证书移动到设备的系统证书目录/system/etc/security/cacerts/,修改文件权限为644,重启设备后JMeter证书会被系统默认信任。- 从JMeter安装目录的
方案3:iOS设备额外配置
手动安装JMeter证书后,还需要进入「设置」→「通用」→「关于本机」→「证书信任设置」,找到JMeter对应的根证书,开启完全信任开关。
注意事项
- 每次重启JMeter的HTTP(S)录制代理后,根证书都会重新生成,需要重新安装新证书到设备,避免旧证书失效
- 若测试应用开启了SSL Pinning(证书锁定),需要先移除应用内的锁定配置后才能完成HTTPS录制
内容的提问来源于stack exchange,提问作者ccaldito
相关产品推荐
相关产品推荐

