如何获取默认的Android信任存储

问题描述 投票:0回答:1

在 Android 上,我需要验证服务器提供的证书是否在 CRL 中。为此,我在另一个答案中发现,这将是一种方法:

public static TrustManager[] getCATrustManager(KeyStore trustStore) {
    CertPathBuilder cpb = CertPathBuilder.getInstance("PKIX");
    PKIXRevocationChecker rc = (PKIXRevocationChecker)cpb.getRevocationChecker();
    rc.setOptions(EnumSet.of(
            PKIXRevocationChecker.Option.PREFER_CRLS, // prefer CLR over OCSP
            PKIXRevocationChecker.Option.ONLY_END_ENTITY,
            PKIXRevocationChecker.Option.NO_FALLBACK)); // don't fall back to OCSP checking

    PKIXBuilderParameters pkixParams = new PKIXBuilderParameters(trustStore, new X509CertSelector());
    pkixParams.addCertPathChecker(rc);

    TrustManagerFactory tmFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
    tmFactory.init(new CertPathTrustManagerParameters(pkixParams));
    ...
}

我的问题是,如何获取默认的 Android 信任存储?我检查了我的手机,已经安装了很多 CA,但我无法找到以编程方式获取它的方法。到目前为止我所看到的只是如何获得自己创建的一个,而不是Android默认的。

android ssl-certificate truststore
1个回答
0
投票

您可以用它来阅读。 参考:https://cs.android.com/android/platform/superproject/main/+/main:external/conscrypt/repackaged/platform/src/main/java/com/android/org/conscrypt/Platform.java ;drc=5ed477c4d7958483ef02c24315a61a13a787c744;l=502

static KeyStore getDefaultCertKeyStore() throws KeyStoreException {
    KeyStore keyStore = KeyStore.getInstance("AndroidCAStore");

    try {
        keyStore.load((InputStream)null, (char[])null);
        return keyStore;
    } catch (CertificateException | NoSuchAlgorithmException | IOException var2) {
        throw new KeyStoreException(var2);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.