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

Android WebView打开链接遇SSL握手失败错误求助(net_error -202)

Android WebView SSL握手失败(net_error -202)解决方案

问题分析

你遇到的chromium: [ERROR:ssl_client_socket_impl.cc(878)] handshake failed; returned -1, SSL error code 1, net_error -202错误,对应ERR_CERT_AUTHORITY_INVALID,说明目标网站的SSL证书签发机构不在Android系统的信任列表中。Chrome能正常访问是因为它有独立的信任存储,可能已自动信任该证书或其签发机构,而WebView依赖系统信任存储,因此出现握手失败。

你当前的网络安全配置仅允许明文流量(cleartextTrafficPermitted="true"),和HTTPS证书信任问题无关,所以无法解决该错误。

解决方案

1. 修正网络安全配置(推荐,安全合规)

如果目标网站使用自签名证书或私有CA签发的证书,需在网络安全配置中添加对该CA的信任:

  • 将CA证书(.pem或.crt格式)放到res/raw目录下
  • 修改network_security_config.xml:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <!-- 替换为你的目标域名 -->
        <domain includeSubdomains="true">your-domain.com</domain>
        <trust-anchors>
            <!-- 引用raw目录下的CA证书 -->
            <certificates src="@raw/your_ca_certificate"/>
            <!-- 如需同时信任系统默认CA,保留此行;仅信任私有CA则删除 -->
            <certificates src="system"/>
        </trust-anchors>
    </domain-config>
</network-security-config>
  • 确保在AndroidManifest.xml的<application>标签中引用该配置:
<application
    ...
    android:networkSecurityConfig="@xml/network_security_config">
    ...
</application>

2. 临时测试方案(仅用于开发/测试环境,禁止生产使用)

如果只是测试需要,可以通过WebViewClient忽略SSL错误,但这会带来严重安全风险,可能导致中间人攻击:

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        // 仅测试环境使用,生产环境请调用handler.cancel()并提示用户证书异常
        handler.proceed();
    }
});

3. 其他排查点

  • 检查证书链完整性:部分服务器未配置完整的证书链,Chrome会自动补全,但WebView不会。可通过本地SSL检测工具验证证书链,若不完整需服务器端补充中间证书。
  • 适配Android系统版本:旧版本Android(如Android 9及以下)不支持TLS 1.3,若服务器仅启用TLS 1.3,需在服务器端兼容TLS 1.2及以下版本。
  • 确认域名配置:检查<domain>标签中的域名是否正确,includeSubdomains="true"是否符合你的需求。

内容的提问来源于stack exchange,提问作者Bhaskar Jyoti Dutta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:32:38