gpt4 book ai didi

java - android调用上的 keystore 版本错误

转载 作者:IT老高 更新时间:2023-10-28 21:00:07 26 4
gpt4 key购买 nike

我想发出一个 https 请求。

我使用 bouncycaSTLe 生成这样的 keystore :

keytool -importcert -trustcacerts -alias ludevCA -file lu_dev_cert.crt -keypass mypass -keystore keystore.bks -storepass mypass -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath bcprov-jdk15on-146.jar  

并且 keylist 命令返回一个正确的值。

但是当我这样做时:

KeyStore ks = KeyStore.getInstance("BKS");
InputStream in = getResources().openRawResource(R.raw.keystore);
ks.load(in, "mypass".toCharArray());

我有一个错误:

wrong version of keystore

我尝试使用几个版本的 bouncycast,但结果是一样的。我也尝试定义 keysize 1024,但没有任何改变。

有什么想法吗?

最佳答案

您需要将 keystore 的类型从 BKS 更改为 BKS-v1(BKS-v1 是 BKS 的旧版本)。因为 BKS 版本如所说 here 发生了变化

还有另一种解决方案,这要容易得多:

  1. 使用 Portecle:
  1. 您可以使用KeyStore Explorer

新文件将使用 BKS-v1 编码,不再显示错误。要更改 KeyStore 类型,请打开 KeyStore Explorer 并转到 Tools -> Change KeyStore Type,然后保存文件。

注意:
Android 适用于不同的 BKS 版本:例如,API 15 需要 BKS-1,而 API 23 需要 BKS,因此您可能需要将这两个文件都放入您的应用中。

您可以使用此代码根据 API 级别在它们之间切换:

int bks_version;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
bks_version = R.raw.publickey; //The BKS file
} else {
bks_version = R.raw.publickey_v1; //The BKS (v-1) file
}
KeyStore ks = KeyStore.getInstance("BKS");
InputStream in = getResources().openRawResource(bks_version);
ks.load(in, "mypass".toCharArray());

关于java - android调用上的 keystore 版本错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11117486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com