2012-01-10 116 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聲稱這應該也行預冰淇淋三明治。