【问题标题】:Does android support .jks keystore type?android 是否支持 .jks 密钥库类型?
【发布时间】:2012-03-07 21:43:12
【问题描述】:

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

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

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

它将密钥库类型返回为“BKS”。

服务器团队发送的密钥库类型为“.jks”(somename.jks) 所以,我收到异常“密钥库版本错误”。

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

KeyStore keystore = KeyStore.getInstance("JKS");       

但是在这里我得到了异常“KeyStore JKS implementation not found”。

这是一段代码:

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) {
    }
}

请指导我解决这个问题。

【问题讨论】:

标签: android ssl keystore


【解决方案1】:

其他选项是使用 KeyStore Explorer(可在线下载 Mac 和 Windows 的可执行文件)切换到 BKS(Bouncy Castle KeyStore)。应该适用于Android。我在使用 JKS 时遇到了类似的问题。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 是的,JKS 是 sun/oracle 专有的格式,我想 Google 并没有感觉像一些更无聊的诉讼。
    • @Cehm 你说的是对的,android 只支持 BKS。我从服务器团队获得了 BKS 密钥库,它使用相同的代码就像魅力一样工作。
    • 是的,似乎 android 不支持 JKS .. 还有 KeyStore.getDefaultType();返回“BKS”
    • @Cehm :感谢 Portecle,我遇到了类似的问题,但 BKS 并没有为我在 android 上工作。你能检查一下这个问题吗:stackoverflow.com/questions/36764841/…
    猜你喜欢
    • 2014-07-09
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 2016-11-13
    • 2017-07-03
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    相关资源
    最近更新 更多