为什么安装的CA不是';t列在Android上的受信任凭据中

为什么安装的CA不是';t列在Android上的受信任凭据中,android,ssl-certificate,retrofit2,Android,Ssl Certificate,Retrofit2,我正在Android(5.1->此设备仅支持此版本)中开发一个与服务器通信的应用程序,为此我使用改型。我有我的CA,我需要将其与我的请求一起发送到服务器。 但我有两个问题: 1.我将cert.p12放入设备上的下载文件夹。然后我安装了它:安全->从SD卡安装。我收到消息说CA已安装,但未在Trusted credentials->USER中列出。 我使用此代码列出应用程序中已安装的所有CA: try { KeyStore ks = KeyStore.getInstanc

我正在Android(5.1->此设备仅支持此版本)中开发一个与服务器通信的应用程序,为此我使用改型。我有我的CA,我需要将其与我的请求一起发送到服务器。
但我有两个问题:
1.我将cert.p12放入设备上的下载文件夹。然后我安装了它:安全->从SD卡安装。我收到消息说CA已安装,但未在Trusted credentials->USER中列出。
我使用此代码列出应用程序中已安装的所有CA:

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.e(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();
    }
我的证书也不在名单上。
有什么建议可以解释原因吗

  • 当我成功安装证书并按上面的代码列出时,只需执行下面的代码即可在服务器端验证客户端吗

  • 致以最良好的祝愿

    你解决了这个问题吗?不幸的是,没有。
    try {
    
                String keyStoreType = KeyStore.getDefaultType();
                KeyStore keyStore = KeyStore.getInstance(keyStoreType);
                if(keyStore != null){
                    keyStore.load(null, null);    
                    String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
                    TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
                    tmf.init(keyStore); 
                    sslContext = SSLContext.getInstance("TLS");
                    sslContext.init(null, tmf.getTrustManagers(), null);
    
                    client = new OkHttpClient.Builder()
                        .sslSocketFactory(sslContext.getSocketFactory())
                        .build();           
                }
    
            } catch (KeyStoreException | CertificateException | NoSuchAlgorithmException | IOException | KeyManagementException e) {
                e.printStackTrace();
            }