【问题标题】:toDerInputStream rejects tag type 0 - Cannot read key from keystoretoDerInputStream 拒绝标记类型 0 - 无法从密钥库中读取密钥
【发布时间】:2018-02-03 12:58:25
【问题描述】:

在我的 Android 应用程序中,我有一个名为 keystore.p12 的密钥库文件,该文件位于 /data/data/com.company.myapp/files 中。我提取了这个特定文件,现在我想检索存储在其中的密钥。

我用这样的 keytool 试了一下:

>keytool.exe -list -keystore C:\Users\user\Desktop\keystore.p12 -storepass letmein -storetype PKCS12 -v

很遗憾,我收到以下错误:

keytool error: java.io.IOException: toDerInputStream rejects tag type 0
java.io.IOException: toDerInputStream rejects tag type 0
        at sun.security.util.DerValue.toDerInputStream(DerValue.java:874)
        at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1915)
        at java.security.KeyStore.load(KeyStore.java:1445)
        at sun.security.tools.keytool.Main.doCommands(Main.java:795)
        at sun.security.tools.keytool.Main.run(Main.java:343)
        at sun.security.tools.keytool.Main.main(Main.java:336)

我用 Java 尝试过同样的事情,但我遇到了同样的异常:

public static void main(String[] args) {
        try {
            FileInputStream is = new FileInputStream("C:\\Users\\user\\Desktop\\keystore.p12");
            KeyStore keystore = KeyStore.getInstance("pkcs12");
            keystore.load(is, "letmein".toCharArray());
            is.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

知道如何解决这个问题吗?

【问题讨论】:

    标签: java android keytool java-security


    【解决方案1】:

    看起来您的 .p12 文件不是 PKCS#12 文件,而是不同的密钥库类型。我会尝试使用Keystore Explorer 打开它,它会尝试使用每个可用的密钥存储类型(PKCS12、BKS、JKS ......)打开文件。

    它可以加载你将在主窗口底部的文件信息中看到的加载算法成功的文件。

    【讨论】:

    • 谢谢。确实不是PKCS#12文件,而是BKS。
    • 我不会使用任何第三方密钥读取在线服务,因为您基本上是将您的密钥交给他们!!!
    • @checklist Keystore Explorer 不是在线服务,它是在您的计算机上本地运行的开源 Java 程序。
    猜你喜欢
    • 2013-12-25
    • 1970-01-01
    • 2021-07-26
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多