2017-08-21 124 views
0

我有一個密鑰庫,我用它來生成一些.csr文件,將它們發送出去並取回.p7b文件。然而,我設法失去了我的密鑰庫密碼,我看到有一個蠻力java程序來解決它,但是我知道我的密碼長度爲15個字符,這需要很長時間。我也嘗試從舊的密鑰庫中創建一個新的密鑰庫,就像一些人所建議的那樣,但它仍然要求我輸入密碼,如果沒有密碼,就會失敗。丟失密鑰庫密碼,我有什麼選擇?

如果我只是創建一個新的密鑰庫並將證書導入該證書,或者我必須申請新的證書,那麼我可能會遇到問題嗎?

+0

測試所有組合,並等待很長一段時間(也許它得到它的第一次嘗試,你可能會幸運)或等待量子計算來改善,這將使得目前所有的加密方法沒用。 –

回答

1

難道我可能碰到的問題,如果我只是創建一個新的密鑰庫和證書導入到一個

你會碰到,你不能這樣做的問題。您已失去對私鑰的訪問權限。

還是必須申請新證書?

你必須創建一個新的密鑰庫,密鑰對,CSR,得到它的簽署,將其導入,...

+0

這就是我的想法,我希望有一些神奇的解決方案。好吧。 –

0

其實它更復雜一些。儘管它的名字,一個Java的密鑰庫「實際上可以包含任意組合:

  • PrivateKeyEntry - 包含專用密鑰匹配的證書或鏈條,用來證明你自己的身份,特別是用於SSL/TLS服務器

  • TrustedCertEntry - 包含證書,通常根CA證書,用來驗證其他各方,包括SSL/TLS客戶機驗證服務器(S)

  • (只在某些格式,不常見JKS)SecretKeyEntry - 在此不相關

請參閱the javadoc for java.security.KeyStore。實際上,Java中用於驗證服務器的SSL/TLS(包括HTTPS)客戶機使用的CA證書的「信任庫」通常是密鑰庫文件,默認情況下是作爲JRE的一部分提供的JRE/lib/security/cacerts ),或從中鏈接(對於OpenJDK,至少在我使用過的系統中)。

因此,如果您告知keytool將您自己的證書導入到新的密鑰庫文件中,它將這樣做 - 但它會這樣做 - 但作爲可識別其他人的可信證書條目(而不是作爲可以識別其他人的私鑰條目)識別你。唯一的跡象是一個微妙的:keytool將會說Certificate was added(這意味着一個trustedcert)NOT Certificate reply was installed(這意味着一個匹配的私鑰)。

如果您然後對SSL/TLS服務器使用此cert-only-not-privatekey密鑰存儲庫,則不會給出任何即時或明顯的錯誤;通常它會將所有連接嘗試拒絕爲「不共有密碼套件」。 (如果兩個端點都配置爲允許「匿名」密碼組,連接將會/可能成功使用匿名套件,但這不會對現在常見的主動攻擊提供安全保護,因此通常不會完成。)

但是這並不能改變結果:沒有密碼,從而獲得了老專用密鑰,你楔形,必須重新開始。請注意,如果您使用的支付CA許多(IME最)他們的允許「重新鍵入」免費同一域名(一個或多個),或在一個很大的折扣一個證書。