如何在android中生成JCEKS密钥库

时间:2014-03-12 03:58:44

标签: android security keystore android-keystore

我用

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

1 个答案:

答案 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