java - 从没有 storepass 的 Java Key Store 导出没有 keypass 的私钥

标签 java keystore jks

我有一个 没有 storepass 的 JKS keystore ,其中包含一个没有 key 通行证的私钥

  • 我不能使用这个商店和这个 key 来交互式签名,例如jarsigner(不允许空的 keypass),
  • 并且所有自动化都因要求存储密码或 key 密码或两者而失败。

但私钥 keystore 中。

我使用 keytool 提取 key 的所有尝试都失败了,所有尝试用密码保护 key 或 keystore 的尝试也都失败了,这都是由于无密码。 GUI 和其他操作 keystore 的工具也是如此。我猜测这是因为 storepassless 商店中的 keypassless key 不再受支持,或者可能从来没有。

但我猜测在 java.security.KeyStore 命名空间或其他地方有代码可以让我使用 Java 代码导出私钥。有谁知道,如果是的话,可以指出我正确的方向,因为我对此的经验为零?

最佳答案

您可以找到一些使用 KeyStore 导出私钥的 Java 代码 here.

当您说您“没有”密码时,您的意思不清楚。 JKS keystore 需要 keystore 密码以及每个 secret 和私钥条目的密码。但是,此密码可以是空字符串。如果这就是您的意思,请使用 new char[0] 作为密码,如下所示:

KeyStore keys = KeyStore.getInstance("JKS");
 /* You don't actually need the password to open the store. */
try (FileInputStream is = new FileInputStream("identity.jks")) {
  keys.load(is, null);
}
char[] password = new char[0];
/* Continue with example from linked answer. */
...

如果不为这些参数指定参数,命令行工具将无法工作,但是您是否尝试过指定一个空字符串?即,-storepass ""?您还可以更改商店本身或单个 key 条目的密码,这样密码就不再为空,工具也不会报错。

关于java - 从没有 storepass 的 Java Key Store 导出没有 keypass 的私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13321492/

相关文章:

java - 如何将此时间(GMT 格式)转换为 IST 时间?

java - 为什么 Integer.parseInt(String s, 2) 和 Integer.toBinaryString(int i) 不兼容?

android - 如何在android keystore 中设置带密码的 key 条目

java - 如何从java中的pfx文件/pem文件获取RSA公钥的指数和模值

java - 使用系统证书签署 apk

java - 从 keystore 获取私钥

java - 无法解析 WifiManager 类中的公共(public)方法 setFrequencyBand

java - if语句分支的性能测试

java - 如何使用 PEM 文件在 Java 中创建 SSL 套接字?

java - 基于 cxf 的客户端中的 cacerts 与 jks