我正在尝试使用服务器团队提供的密钥库连接到服务器。
在首先向服务器发送服务调用时,我使用以下api
创建了KeyStore实例KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
它将密钥库类型返回为“BKS”。
服务器团队发送的密钥库类型为“.jks”(somename.jks)因此,我得到了异常“密钥存储的错误版本”。
我尝试通过以下方式将“JKS”传递给KeyStore的getInstance()
KeyStore keystore = KeyStore.getInstance("JKS");
但是在这里我得到了异常“未找到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) {
}
}
请指导我解决这个问题。
答案 0 :(得分:25)
我认为Android支持'仅'BouncyCastle KeyStores(称为BKS)...... 您仍然可以使用Portecle
要将它从JKS转换为BKS,应该像魅力一样(至少在尝试将我的.CRT存储为BKS格式时,它对我有用!)
'only'意思,很容易在这里:p,否则你将不得不操纵东西