我正在编写一个应用程序,其中列出了安装的所有证书 设备。但是我发现有两个地方有证书 存储:
System/etc/security/cacerts.bks:此文件包含所有 预装证书。我可以使用 在 frameworks/中定义的 Keystore 类 base/keystore/java/android/security.
data/misc/keystore:另一种安装证书的方式(例如,通过 certinstaller app) 安装第三方证书并制作 它在这个目录中的条目。
但我不知道如何读取序列号等证书信息, 此文件中的 IssuerDN 等。
最佳答案
我使用下面的代码 fragment 来列出
public void PrintInstalledCertificates() {
try {
KeyStore ks = KeyStore.getInstance("AndroidCAStore");
if (ks != null) {
ks.load(null, null);
Enumeration<String> aliases = ks.aliases();
while (aliases.hasMoreElements()) {
String alias = (String) aliases.nextElement();
java.security.cert.X509Certificate cert = (java.security.cert.X509Certificate) ks.getCertificate(alias);
//To print System Certs only
if(cert.getIssuerDN().getName().contains("system")){
System.out.println(cert.getIssuerDN().getName());
}
//To print User Certs only
if(cert.getIssuerDN().getName().contains("user")){
System.out.println(cert.getIssuerDN().getName());
}
//To print all certs
System.out.println(cert.getIssuerDN().getName());
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (java.security.cert.CertificateException e) {
e.printStackTrace();
}
}
关于android - 列出所有在 android 上安装的证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4458046/