You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android WebView报SslError.SSL_UNTRUSTED但证书在Chrome中有效

问题分析:WebView报SSL_UNTRUSTED但Chrome正常的原因

你遇到的这种情况——WebView触发SslError.SSL_UNTRUSTED但Chrome能正常验证证书,本质是两者的证书信任机制存在差异,以下是几个最可能的原因及排查方向:

1. 根证书信任存储不同

Chrome拥有独立的、Google维护的根证书库,而Android WebView(Android 7.0及以下版本)默认依赖系统内置的根证书库。如果你的网站证书由某个未预装在设备系统中的CA颁发,WebView就会判定证书不被信任;但Chrome因为内置了该CA的根证书,所以能顺利通过验证。

2. 证书链不完整

很多服务器在返回证书时仅提供了网站的「叶子证书」,未附带完整的中间证书链。Chrome具备自动补全中间证书的能力——它会从自身存储或在线源获取缺失的中间证书,完成完整的信任链验证;但WebView没有这个机制,当无法构建完整信任链时,就会抛出SSL_UNTRUSTED错误。

你可以通过以下命令检查服务器的证书链是否完整:

openssl s_client -connect your-domain.com:443

查看输出中Certificate chain部分,如果中间证书的数量不足,就说明存在链不完整的问题。

3. Android版本兼容性限制

旧版本Android(如Android 6.0及以下)对现代加密标准的支持有限:

  • 部分旧系统不支持SHA-256签名的根证书
  • 对TLS 1.2及以上版本的支持不完善
    这些都会导致WebView验证失败,但更新后的Chrome已经适配了这些标准,所以能正常访问。

4. WebView的证书验证逻辑更严格

WebView对证书的某些扩展字段(如名称约束、密钥用法)的验证逻辑比Chrome更严格。如果你的证书包含了WebView不支持的扩展规则,也会触发SSL_UNTRUSTED错误。


排查建议

  • 在不同Android版本的设备上测试,确认问题是否仅出现在旧版本系统中;
  • 联系服务器管理员,确保服务器返回完整的证书链(包含叶子证书+所有中间证书);
  • 检查设备系统的根证书库,确认是否缺少对应CA的根证书(必要时可手动安装)。

内容的提问来源于stack exchange,提问作者andreaciri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:00:18