是否有可能检查Android设备上是否安装了特定证书?例如,特殊公司证书?
答案 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之前。