我用
KeyStore store = KeyStore.getInstance("JCEKS");
但是要使KeyStoreException
java.security.KeyStoreException: KeyStore JCEKS implementation not found
原因是Android中的默认安全提供程序是bouncycastle。 因此我使用
KeyStore store = KeyStore.getInstance("JCEKS", "SunJCE");
但是要使NoSearchProviderException
java.security.NoSearchProviderException: SunJCE
答案 0 :(得分:1)
Android不包含SunJCE安全提供程序,因此JCEKS不是受支持的密钥库类型(旧版JKS格式也不是)。
要创建KeyStore,您可以选择BouncyCastle密钥库
KeyStore ks = KeyStore.getInstance("BKS");
或者,从Android 4.3开始,基于OpenSSL的新AndroidKeyStore
决定存储应用私钥(更多详情here)
KeyStore ks = KeyStore.getInstance("AndroidKeyStore");
如果您有JCEKS密钥库,则必须使用keytool将其转换为BKS格式:
keytool -importkeystore -srcstoretype JCEKS -srckeystore my.keystore -srckeypass my_password -destprovidername BC -deststoretype BKS -destkeypass my_new_password -destkeystore my.bks