最后,设法找到了一种方法来做到这一点,所以让我分享一下,以防这对其他人有用。事实证明,Android 可以访问系统范围内的受信任证书。这里的细节(以及它以前对我不起作用的原因)是我使用的密钥库“类型”标识符:
KeyStore ks = KeyStore.getInstance("AndroidKeyStore");
我相信这是试图找到实际的密钥,当然不应该共享。因此,经过一番挖掘,我发现有一个单独的类型,AndroidCAStore,它对我有用。所以这是一个工作代码摘录,它只是打印出证书:
try {
KeyStore ks = KeyStore.getInstance("AndroidCAStore");
ks.load(null);
try {
Enumeration<String> aliases = ks.aliases();
while (aliases.hasMoreElements()) {
Certificate cert = ks.getCertificate(aliases.nextElement());
Log.e(TAG, "Certificate: " + cert.toString());
}
}
catch(Exception e) {
e.printStackTrace();
}
}
catch (IOException|NoSuchAlgorithmException|KeyStoreException|CertificateException e) {
e.printStackTrace();
}