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

Android如何优雅实现TLS服务端证书获取及全流程校验

Android平台TLS服务端证书校验实现方案

核心实现步骤

1. 拉取服务端TLS证书

使用系统原生HttpsURLConnection即可直接获取服务端返回的证书链,无需引入老旧的HttpClient组件,示例代码如下:

HttpsURLConnection conn = null;
try {
    URL url = new URL("待校验的目标URL");
    conn = (HttpsURLConnection) url.openConnection();
    conn.setConnectTimeout(5000);
    conn.setReadTimeout(5000);
    // 发起连接
    conn.connect();
    // 获取服务端证书链,数组第一个元素即为服务端叶子证书
    Certificate[] certs = conn.getServerCertificates();
    X509Certificate serverCert = (X509Certificate) certs[0];
    // 后续校验逻辑基于serverCert执行
} catch (IOException e) {
    // 连接异常处理逻辑
} finally {
    if (conn != null) {
        conn.disconnect();
    }
}

注意:不要为了连接成功随意修改默认TrustManager、绕过系统默认SSL校验逻辑,避免引入安全风险

2. 提取证书subject字段

直接调用X509Certificate自带的方法即可获取:

// 直接获取完整的subject字段字符串
String fullSubject = serverCert.getSubjectX500Principal().getName();
// 如果需要提取单个字段(比如通用名CN)可以遍历X500Principal的属性字段实现

3. 校验证书有效期

系统API直接提供了有效期校验方法,无需自行解析时间字段:

try {
    // 校验证书是否在有效期内,过期/未生效都会抛出对应异常
    serverCert.checkValidity();
} catch (CertificateExpiredException e) {
    // 证书已过期处理逻辑
} catch (CertificateNotYetValidException e) {
    // 证书未生效处理逻辑
}

4. OCSP有效性校验

Android 7.0(API 24)及以上系统自带OCSP校验能力,直接使用CertPathValidator配置OCSP参数即可实现自动查询,无需手动构造请求:

// 配置校验参数
PKIXParameters params = new PKIXParameters(TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
        .getTrustManagers()[0].getAcceptedIssuers());
// 开启OCSP校验
params.setRevocationEnabled(true);
Security.setProperty("ocsp.enable", "true");
// 构造证书路径
List<Certificate> certList = Arrays.asList(certs);
CertPath certPath = CertificateFactory.getInstance("X.509").generateCertPath(certList);
// 执行校验
CertPathValidator validator = CertPathValidator.getInstance("PKIX");
validator.validate(certPath, params);

如果需要兼容API 24以下版本,可以引入BouncyCastle加密库,手动从证书的Authority Information Access扩展字段提取OCSP服务地址,构造OCSP请求发送并解析响应即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:45:03