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

Android连接Gandi.net HTTPS服务器遇SSLHandshakeException问题求助

问题分析与解决方法

核心原因定位

报错CertPathValidatorException: Response is unreliable: its validity interval is out-of-date结合Android应用独有的问题,大概率是服务器SSL证书链配置不完整,或是Android系统对证书信任链的验证逻辑与浏览器/iOS存在差异:

  • 浏览器和iOS会自动尝试补全缺失的中间证书,但Android的HttpURLConnection或OkHttp等HTTP客户端不会自动补全,导致证书链验证失败。
  • 少数情况是证书有效期确实存在问题,或是设备时间与证书有效期区间不匹配(即使自动同步,部分旧Android系统的时区/时间同步可能存在夏令时相关bug)。

解决步骤

1. 修复服务器端SSL证书链(优先方案)

这是根本解决方法,需检查Gandi服务器的证书链配置是否完整:

  • 用openssl命令验证证书链:
    openssl s_client -connect your-api-domain:443 -showcerts
    
    查看输出的证书链,需确保包含服务器证书+Gandi对应的中间证书。如果只返回了服务器证书,说明链不完整。
  • 重新部署完整证书链:将Gandi提供的服务器证书与中间证书合并为一个PEM文件(中间证书放在服务器证书之后),替换服务器上的证书配置并重启HTTPS服务。

2. 验证证书有效期与设备时间

  • 查看证书的有效区间:
    # 从服务器获取证书并查看有效期
    openssl s_client -connect your-api-domain:443 2>/dev/null | openssl x509 -noout -dates
    
    确认所有测试设备的时间在notBefore和notAfter区间内,手动设置设备时间为当前标准时间(关闭自动同步后再开启)排查时间同步问题。

3. Android应用端网络安全配置(临时兼容方案)

若暂时无法修复服务器链,可通过network_security_config.xml配置信任完整证书链:

配置文件示例(res/xml/network_security_config.xml)

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <!-- 替换为你的API域名,includeSubdomains=true表示包含子域名 -->
        <domain includeSubdomains="true">your-api-domain.com</domain>
        <trust-anchors>
            <!-- 保留系统默认信任的CA -->
            <certificates src="system" />
            <!-- 添加Gandi的中间证书作为信任锚,需将证书文件(.pem格式)放到res/raw目录 -->
            <certificates src="@raw/gandi_intermediate_cert" />
        </trust-anchors>
    </domain-config>
</network-security-config>

关联到应用清单

在AndroidManifest.xml的<application>标签中添加配置引用:

<application
    ...
    android:networkSecurityConfig="@xml/network_security_config">
    ...
</application>

注意:生产环境禁止使用禁用证书验证的配置(如debug-overrides),这会引入安全风险,仅可用于临时测试。

4. 检查HTTP客户端配置

如果应用使用OkHttp等自定义客户端,需确认:

  • 未自定义TrustManager导致系统默认信任锚被移除;
  • 客户端未强制使用过时的TLS版本(如TLS 1.0),Gandi服务器可能已禁用旧版本协议,而Android默认配置可能不兼容。

关键注意事项

  • 优先修复服务器端证书链,这是解决问题的核心,应用端配置仅作为临时兼容手段;
  • Android 7.0(API 24)及以上系统默认不信任用户添加的证书,必须通过network_security_config明确配置信任锚;
  • 若测试的Android设备版本偏低(API 23及以下),需确认Gandi的根证书已被该系统版本信任,必要时添加根证书到应用信任锚。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:57:47