2012-11-10 51 views
3

我有沒有存儲通道的JKS密鑰存儲,其中包含沒有密鑰通過的私鑰沒有密鑰通道的情況下從Java密鑰存儲沒有存儲通道導出私鑰

  • 我不能使用這個存儲和使用例如此鍵交互標誌jarsigner(它不允許空的keypass),
  • 和所有自動化失敗要麼通過storepass或keypass或兩者。

但私鑰是密鑰庫

我所有試圖使用keytool解壓密鑰的嘗試都失敗了,並且由於無效,所有嘗試密碼保護密鑰或密鑰庫的嘗試都失敗了。 GUI和其他操作密鑰庫的工具也是如此。我是猜測這是因爲storepasspassless商店中的keypassless密鑰不再是受支持的方案,或者可能從來沒有。

但我猜java.security.KeyStore命名空間或其他地方的代碼可以讓我使用Java代碼導出私鑰。有誰知道肯定,如果是這樣,可以指向正確的方向,因爲我沒有這方面的經驗?

+1

你確定密碼不是默認密碼'changeit'嗎? – MikeN

回答

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 ""?您還可以更改商店本身的密碼或單個密鑰條目的密碼,以便密碼不再爲空,並且工具不會發生抱怨。