我有一个没有商店通行证的 JKS密钥库,其中包含一个没有密钥通行证的私钥。
jarsigner
(不允许空密钥传递),但密钥库中的私钥是。
我使用keytool
提取密钥的所有尝试都失败了,所有密码保护密钥或密钥库的尝试都失败了,所有这些都是由于无法通过。 GUI和其他操纵密钥库的工具也是如此。我猜测这是因为storepassless商店中的keypassless密钥不再是受支持的方案,或者可能永远不会支持。
但我猜测java.security.KeyStore
命名空间或其他地方的代码允许我使用Java代码导出私钥。有没有人确切知道,如果是的话,可以指出我正确的方向,因为我没有经验吗?
答案 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 ""
?您还可以更改商店本身的密码或单个密钥条目,以便密码不再为空,工具也不会抱怨。