我有需要密鑰庫的java代碼,並且我有privateKey.pem和bank.cer文件。私鑰將簽署一份價值銀行和bank.cer來驗證銀行的迴應。我找不到一種方法將它們放入密鑰庫,以便我的代碼可以正常工作。從私鑰和公鑰創建密鑰庫
可以用keytool來完成嗎?
我有需要密鑰庫的java代碼,並且我有privateKey.pem和bank.cer文件。私鑰將簽署一份價值銀行和bank.cer來驗證銀行的迴應。我找不到一種方法將它們放入密鑰庫,以便我的代碼可以正常工作。從私鑰和公鑰創建密鑰庫
可以用keytool來完成嗎?
從我的理解中,不可能單獨使用keytool
來做到這一點。我使用openssl
進行準備。
假設密鑰在文件key
中且證書在文件cert
中。你必須創建一個包含PKCS12文件中同時(因爲keytool
可以處理PKCS12和JKS,我不知道別的):
openssl pkcs12 -inkey key -in cert -export -out keys.pkcs12
現在你可以導入到密鑰庫中:
keytool -importkeystore -srckeystore keys.pkcs12 -srcstoretype pkcs12 -destkeystore mykeystore
這種方法對我來說一切都失敗了。
要列出密鑰庫的私鑰條目中的整個鏈,可以將證書鏈的幾個.pem文件放在一起,然後使用openssl的'-certfile'選項將它們添加到pkcs-store。 – Andy 2012-10-09 12:12:40
這對我有效。但是,我必須確保始終使用相同的密碼;我以爲我可以使用臨時密碼來編寫和讀取PKCS12,並且只給* key *作爲'keytool'的輸出,但是它創建了一個密鑰庫,其中密鑰庫和密鑰具有不同的密碼,這顯然非常糟糕(http ://joewlarson.com/blog/2009/03/25/java-ssl-use-the-same-password-for-keystore-and-key/)。 – Blaisorblade 2015-05-11 18:41:01
@ musiKk的解決方案在爲我創建PKCS12文件時稍作修改,設置密碼,否則以後的keytool命令會出現錯誤。 openssl pkcs12 -inkey key -in cert -export -out keys.pkcs12 -passout pass:yourpasswd – 2016-08-20 03:13:50
我認爲如果您能提供您迄今爲止所嘗試的,這將是一件好事。 – musiKk 2011-06-06 14:02:39
我已經嘗試導入keytool,但它導入爲trustedCertEntry,但我希望它是一個privateKeyEntry。還嘗試了一個名爲ktl241的java程序,它說java.lang.Exception:obj:導入私鑰pem時不是X509Certificate的實例。還嘗試了谷歌的頂級搜索結果。 – ivar 2011-06-07 06:00:32
我曾經寫過一篇關於如何做到這一點的博客文章。也許它有幫助:http://quakology.blogspot.com/2009/06/how-to-use-ssl-with-client-certificate.html – musiKk 2011-06-07 07:01:57