Android部署后应用未拦截自签名SSL证书的技术求助
解决Cordova Android应用接受自签名SSL证书的问题
你的Cordova Android应用没有正确拦截自签名SSL证书的请求,反而能正常和服务器通信,这大概率是默认配置或代码层面绕过了SSL验证导致的。下面是具体的排查和修复步骤:
1. 配置严格的Android网络安全策略(Android 9+必做)
Android 9及以上版本默认限制不安全连接,但如果没有明确配置证书信任规则,可能会默认放行自签名证书。你需要添加自定义的网络安全配置:
- 在项目的
platforms/android/app/src/main/res/xml目录(没有xml文件夹就新建一个)创建network_security_config.xml文件,内容如下:<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="false"> <trust-anchors> <!-- 只信任系统预装的官方CA证书,拒绝所有自签名证书 --> <certificates src="system" /> </trust-anchors> </base-config> </network-security-config> - 打开
platforms/android/app/src/main/AndroidManifest.xml,在<application>标签中添加配置引用:<application ... android:networkSecurityConfig="@xml/network_security_config">
2. 排查代码里的SSL绕过逻辑
检查应用中的HTTP请求相关代码,确认有没有主动忽略证书错误的逻辑:
- 如果用了
cordova-plugin-advanced-http这类插件,确保没有设置disableSslValidation: true参数; - 检查Angular HttpClient的拦截器或自定义请求逻辑,有没有添加绕过SSL验证的代码。
3. 检查Cordova全局访问配置
打开项目根目录的config.xml,确认没有宽松的安全策略:
- 避免使用
<access origin="*" />这种全局允许的配置,尽量限制到特定合法域名; - 检查
<allow-navigation>标签,确保没有允许不安全的导航规则。
4. 清理缓存后重新构建
旧的构建缓存可能导致配置不生效,执行以下命令重新打包测试:
ionic cordova clean android ionic cordova run android --prod
完成以上操作后,再次发起登录请求,应该就能触发预期的证书验证错误,控制台会显示net::ERR_INSECURE_RESPONSE这类提示了。
内容的提问来源于stack exchange,提问作者mrcl
相关产品推荐
相关产品推荐

