Android错误版本的密钥存储区

时间:2018-11-27 20:14:41

标签: java android ssl ssl-certificate keystore

我正在编写一个Android应用程序,它将使用SSL与运行Java的x86 Linux服务器进行通信。我的目标是对传输层进行加密,因此我选择使用SSL。我希望客户端在与Web服务器的每个新连接中生成其自己的密钥。

我收到一个例外:

W/System.err: java.io.IOException: Wrong version of key store.
        at com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi.engineLoad(BcKeyStoreSpi.java:815)
        at java.security.KeyStore.load(KeyStore.java:1484)
        at com.example.jncy.ssltest.MainActivity$1.run(MainActivity.java:82)
        at java.lang.Thread.run(Thread.java:764)
Application terminated. 

如果您签出该问题的可接受解决方案,则这是我为客户端和服务器进行的设置以及我如何生成.p12文件。 SSLServerSocket and certificate setup

从我所做的研究中,我听说Android使用KeyStore的BKS版本,而服务器上的Java使用pkcs12版本。我不完全了解发生了什么,但是我想密钥库必须是同一类型? (这是我感到困惑的地方,因为我认为密钥库只是保存证书)

当我尝试在Android中加载pkcs12时,仍然会遇到相同的异常。

            KeyStore trustStore = KeyStore.getInstance("pkcs12");
            Log.d("TYPE", KeyStore.getDefaultType());

            InputStream tstore = getResources().openRawResource(idcert);//MainActivity.class.getResourceAsStream("/"+"servercert.p12");
            trustStore.load(tstore, "abc123".toCharArray());
            tstore.close();

0 个答案:

没有答案