我有代码创建自己的Trust Store以连接到私人服务器。
当我在Android 4.0.3的HTC Desire C上运行时,我得到异常:IOException:密钥库的错误版本。于:
trustStore = KeyStore.getInstance("BKS");
InputStream in = getResources().openRawResource(R.raw.keystore);
trustStore.load(in, "xxxpasswordxxx".toCharArray());
在它执行load()的最后一行。
当我在以下设备上运行代码时,它可以正常工作:
Nexus 7和Android 4.4.4,Nexus 4和Android 5.1,HTC One X +和Android 4.2.2
所有设备的APK都相同(并且密码正确)。关于我应该尝试什么来解决它的任何建议?
答案 0 :(得分:1)
也许尝试将您的密钥库转换为pkcs12密钥库。
implicit class RichInt(private val i: Int) extends AnyVal {
def squared = i * i
}
然后使用
openssl pkcs12 -export -inkey yourKeyFile.key -in yourCertKey.crt -out yourPkcs12Key.p12
有时为我工作。
答案 1 :(得分:0)
老问题,但没有回答...... 对于仍在寻找的人,答案是: Wrong version of keystore on android call
因为android 4.03-正在使用BKS-V1(旧版本)而不是其他BKS ......