如何查看cacerts.bks内容(证书文件/system/etc/security/cacerts.bks)

问题描述 投票:0回答:3

有人知道如何查看Android设备支持的根证书列表吗? 我想查看该信息。

我发现

/system/etc/security/cacerts.bks
包含根证书信息, 但我无法使用任何可用的编辑器解码内容。

我也尝试过KeyTool,但没有成功。

请建议如何解码此文件的内容。

问候,

杜尔加

android root client-certificates
3个回答
19
投票
keytool -list -v -keystore "cacerts.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-146.jar" -storetype BKS -storepass ""

8
投票

如果你不想成为一个总是编写脚本/代码做他想做的事情的专家。

这是为您推荐的 GUI 密钥库工具:http://www.keystore-explorer.org/downloads.html


2
投票

您可以通过代码获取 Android 设备中已安装证书的列表:在 onCreate() 方法中,包含以下代码:

适用于冰淇淋三明治之前的设备(API < 14):

TrustManagerFactory tmf;
    try {
        tmf = TrustManagerFactory.getInstance(TrustManagerFactory
                .getDefaultAlgorithm());

        tmf.init((KeyStore) null);

        X509TrustManager xtm = (X509TrustManager) tmf.getTrustManagers()[0];
        for (X509Certificate cert : xtm.getAcceptedIssuers()) {
            String certStr = "S:" + cert.getSubjectDN().getName() + "\nI:"
                    + cert.getIssuerDN().getName();
            Log.d(LOG_TAG, certStr);
        }
    } catch (NoSuchAlgorithmException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (KeyStoreException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

对于 Android 4.0 及以上版本的设备(API >= 14):

try 
    {
        KeyStore ks = KeyStore.getInstance("AndroidCAStore");
        if (ks != null) 
        {
            ks.load(null, null);
            Enumeration aliases = ks.aliases();
            while (aliases.hasMoreElements()) 
            {
                String alias = (String) aliases.nextElement();
                java.security.cert.X509Certificate cert = (java.security.cert.X509Certificate) ks.getCertificate(alias);

                Log.d(LOG_TAG, 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();
    }
© www.soinside.com 2019 - 2024. All rights reserved.