代码之家  ›  专栏  ›  技术社区  ›  John Doe

toDerInputStream拒绝标记类型0-无法从密钥库读取密钥

  •  4
  • John Doe  · 技术社区  · 7 年前

    keystore.p12 /data/data/com.company.myapp/files . 我提取了这个特定的文件,现在我想检索存储在其中的密钥。

    >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();
            }
        }
    

    你知道我怎么解决这个问题吗?

    1 回复  |  直到 7 年前
        1
  •  7
  •   Robert    3 年前

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