在没有storepass的情况下从Java Keystore导出没有keepass的私钥

时间:2012-11-10 11:09:41

标签: java keystore jks

我有一个没有商店通行证的 JKS密钥库,其中包含一个没有密钥通行证的私钥

  • 我不能使用此商店和此密钥以交互式签名使用例如jarsigner(不允许空密钥传递),
  • 并且所有自动化通过要求storepass或keypass或两者都失败。

但密钥库中的私钥

我使用keytool提取密钥的所有尝试都失败了,所有密码保护密钥或密钥库的尝试都失败了,所有这些都是由于无法通过。 GUI和其他操纵密钥库的工具也是如此。我猜测这是因为storepassless商店中的keypassless密钥不再是受支持的方案,或者可能永远不会支持。

但我猜测java.security.KeyStore命名空间或其他地方的代码允许我使用Java代码导出私钥。有没有人确切知道,如果是的话,可以指出我正确的方向,因为我没有经验吗?

1 个答案:

答案 0 :(得分:1)

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

当您说“没有”密码时,您的意思并不清楚。 JKS密钥存储区需要密钥存储密码和每个密钥和私钥条目的密码。但是,此密码可以是空字符串。如果这就是您的意思,请使用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 ""?您还可以更改商店本身的密码或单个密钥条目,以便密码不再为空,工具也不会抱怨。