【问题标题】:Convert Keystore - Windows-my to jks将密钥库 - Windows-my 转换为 jks
【发布时间】:2011-02-05 00:12:46
【问题描述】:

我们正在使用 SunMSCAPI 检索当前用户密钥库,如下所示。

keystore = KeyStore.getInstance("Windows-MY", "SunMSCAPI");

我们将需要构建一个 JKS/PKCS12 类型的 JSSE 密钥库并将其传递给应用程序..

有点开始了解这是如何工作的。任何帮助将不胜感激。

【问题讨论】:

    标签: java pkcs#12 jks


    【解决方案1】:

    你有没有尝试过类似的东西

    keystore.load(inputStreamFromOriginalFile, password);
    KeyStore keystore2 = KeyStore.getInstance("JKS");
    for (String name : toIterable(keystore.aliases())) {
        Entry entry = keystore.getEntry(name, protParam);
        keystore2.setEntry(name, entry, protParam);
    }
    keystore2,store(outputStream, password);
    

    我的意思是所有条目的转储副本到新的密钥库2。

    【讨论】:

    • 谢谢。 getentry/setentry 不起作用。它试图找到 keyformat 和 keyencoding 并且两者都设置为 null。引发以下异常。看起来我们真的不能这样做。 java.security.KeyStoreException:未找到密钥保护算法:com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineSetKeyEntry(PKCS12KeyStore.java:409) 处的 java.lang.NullPointerException
    • 我想,这是可能的,但需要设置密钥保护算法,不管它是什么。整个 API 比密码学要神秘得多。顺便说一句,你知道portecle.sourceforge.net它可能可以做到,或者你至少可以检查源代码。
    • 感谢您的帮助。我查看了来源或门禁。它的作用相同.. 获取密钥、certchain 和 setskeyentry.. 我可以将 JKS 存储转换为 PKCS12,但不是出于此特定目的。当我们使用 SunMSCAPI 从该存储中检索密钥时,未指定密钥的格式和编码,从而导致空指针..
    • 这很奇怪。尝试为 JSK 或 PKCS12 密钥库设置条目时会遇到异常,否则您可以使用此类密钥库。您是否尝试将new PasswordProtection(password) 作为参数传递?您是否尝试从密钥库中导出所有内容(例如,到文件)并将其加载到新的?使用程序或门户?
    • 对不起。当我尝试从 JKS 转换为 PKCS12 时,我没有遇到任何异常。我只在从 Windows-my 转换为其他任何东西时遇到异常..
    猜你喜欢
    • 2013-04-12
    • 2011-11-23
    • 2016-09-02
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 2018-03-29
    • 2015-06-01
    相关资源
    最近更新 更多