3

我有一个没有 storepass 的 JKS 密钥库,其中包含一个没有 keypass 的私钥

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

但是私钥密钥库中。

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

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

4

1 回答 1

1

KeyStore您可以在此处找到一些用于导出私钥的Java 代码

当您说“没有”密码时,不清楚您的意思。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 ""?您还可以更改商店本身的密码或单个密钥条目,以便密码不再为空并且工具不会抱怨。

于 2012-11-10T16:13:40.107 回答