检查设备上是否安装了特定证书

时间:2012-01-10 14:35:27

标签: android certificate

是否有可能检查Android设备上是否安装了特定证书?例如,特殊公司证书?

1 个答案:

答案 0 :(得分:1)

我让它在使用Android 5.1.1的设备上工作。

根据您要检查它是否是您要查找的证书,您可以选择任何字段并进行比较。我只是快速检查发行人专有名称(DN)。

private boolean isCertificateInstalled(String issuerDn) {
    try {
        TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        tmf.init((KeyStore) null);
        X509TrustManager xtm = (X509TrustManager) tmf.getTrustManagers()[0];
        for (X509Certificate cert : xtm.getAcceptedIssuers()) {
            if (cert.getIssuerDN().getName().contains(issuerDn)) {
                return true;
            }
        }
    } catch (NoSuchAlgorithmException | KeyStoreException e) {
        // Handle exceptions
    }
    return false;
}

我从this answer那里得到了这个解决方案,声称这应该也适用于IceCream Sandwich之前。