旧Android设备无法识别Let's Encrypt证书致APP API请求失败?
证书兼容性问题导致旧Android设备API请求失败的分析
大概率是证书兼容性问题导致旧Android设备无法正常发起API请求,具体原因和验证、解决方式如下:
核心原因
- Let's Encrypt当前默认颁发的证书采用RSA算法+SHA-256签名,且依赖ISRG Root X1根证书。近10年的旧Android设备(多为Android 4.x及更早版本)系统内置的信任库要么不支持SHA-256等现代签名算法,要么缺少ISRG Root X1根证书。虽然Let's Encrypt曾用DST Root CA X3做交叉签名,但该根证书已过期,旧设备无法验证新颁发的证书合法性。
- 旧Android浏览器显示“不安全”,说明设备已判定证书无效,此时系统的SSL/TLS安全机制会直接拦截所有HTTPS请求——APP的API调用依赖系统底层的网络验证逻辑,自然会被阻断,导致登录失败。
验证步骤
- 在旧Android设备上手动安装ISRG Root X1根证书,测试浏览器是否显示安全、APP能否正常登录。
- 用以下命令检查证书链兼容性:
查看返回结果中是否包含旧设备可识别的根证书,以及签名算法是否为旧系统支持的类型。openssl s_client -connect your-domain.com:443 -servername your-domain.com
解决方案
- 配置cert-manager颁发兼容旧Android的证书:在ClusterIssuer或Issuer中指定使用兼容算法(如SHA-256仍可尝试,若不行则降级到SHA-1,但不推荐长期使用),或者启用Let's Encrypt的交叉签名证书链(包含已过期但仍被旧设备信任的DST Root CA X3)。
- 调整Ingress的TLS配置,确保证书链完整且包含旧设备信任的根证书条目。
内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture
相关产品推荐
相关产品推荐

