2012-01-10 110 views
1

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

+0

确定一些更多的研究似乎是不可能的。它应该可以与Android 4.0 ICS,但不能与较低版本:( – Henry 2012-01-10 15:47:30

回答

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声称这应该也行预冰淇淋三明治。

相关问题