android是否支持.jks密钥库类型?

San*_*kar 16 ssl android keystore

我正在尝试使用服务器团队提供的密钥库连接到服务器.

在首先向服务器发送服务调用时,我使用以下api创建了KeyStore实例

KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
Run Code Online (Sandbox Code Playgroud)

它将密钥库类型返回为"BKS".

服务器团队发送的密钥库类型为".jks"(somename.jks)因此,我得到异常"密钥存储的错误版本".

我尝试通过以下方式将"JKS"传递给KeyStore的getInstance()

KeyStore keystore = KeyStore.getInstance("JKS");       
Run Code Online (Sandbox Code Playgroud)

但在这里,我得到了异常"未发现KeyStore JKS实现".

这是一段代码:

KeyStore trustStore  = KeyStore.getInstance(KeyStore.getDefaultType());

InputStream instream = mContext.getAssets().open("somename.jks");

try {
    trustStore.load(instream, "password".toCharArray());
} finally {
    try {
       instream.close();
    } catch(Exception ignore) {
    }
}
Run Code Online (Sandbox Code Playgroud)

请指导我解决这个问题.

Ceh*_*ehm 25

我认为Android支持'仅'BouncyCastle KeyStores(称为BKS)......你仍然可以使用Portecle

要将它从JKS转换为BKS,应该像魅力一样工作(至少它在我尝试将.CRT存储为BKS格式时对我有用!)

'只'意思,很容易在这里:p,否则你将不得不操纵东西