2013-06-13 111 views
8

我擁有來自CA的公共證書。我想使用此證書創建Java SSL連接。我提到了How can I use different certificates on specific connections?Java SSL connection with self-signed certificate without copying complete keystore to client。從這我明白,我需要將證書導入密鑰庫。不過,我還沒有收到CA的任何密鑰庫。我創建了一個密鑰庫,並試圖將公共證書導入到它。但後來我得到以下錯誤:將公共證書導入密鑰庫時出錯

的keytool錯誤:java.lang.Exception的:公鑰答覆和密鑰庫不匹配

我是否需要從CA密鑰庫還是我做錯了什麼?用於創建密鑰存儲


命令:

keytool -genkey -alias tomcat -keyalg RSA -keystore keystore.jks 

使用的命令導入證書:

keytool -import -v -alias tomcat -file signed-cert.pem -keystore keystore.jks 
+0

你可以請更具體一點嗎?您使用哪個命令創建密鑰庫,以及如何導入證書? –

+0

命令創建密鑰庫: 的keytool -genkey -alias tomcat的-keyalg RSA -keystore keystore.jks 命令導入證書: 的keytool -import -v -alias tomcat的-file簽署-cert.pem -keystore密鑰庫。 jks – DanMatlin

+0

@Zeutheus你有沒有找到一種方法來完成這項工作?我面臨類似的問題,上述問題的解決方案將有所幫助。 – themanwhosoldtheworld

回答

5

我想你是不是正確遵循登入過程證書。結帳討論https://forums.oracle.com/thread/1533940到按以下步驟正確地實現它們:

  1. 創建密鑰庫 keytool -genkey -keyalg RSA -keystore test.keystore -validity 360 (這會產生一個密鑰,並用「的myKey」的別名鍵(DC))

  2. 創建證書籤名請求(CSR)。 keytool -certreq -keyalg RSA -file test.csr -keystore test.keystore (這會產生一個文本CSR文件)

  3. 已經產生了簽名的證書:http://www.instantssl.com/ssl-certificate-support/csr_generation/ssl-certificate-index.html

  4. 進口簽名證書 (注意CRLFs如果粘貼從第3步簽名的證書) keytool -import -alias newkey -file <signed cert file> -keystore test.keystore (重要這有一個不同於步驟1的別名(默認爲「mykey」)?

  5. 導出用於客戶端使用的公鑰 keytool -export -alias mykey -file test.publickey -keystore test.keystore

在服務器系統

  • 創建信任 keytool -genkey -keyalg RSA -keystore test.truststore -validity 360 (這會產生一個密鑰庫,並用 「的myKey」 的別名的密鑰(DC))

  • 通過客戶端 keytool -import -file test.publickey -keystore test.truststore

    測試SSL SOAP服務 -
  • 導入公鑰

    問題是讓步驟1和6中的別名默認爲「mykey」。 當我改變了第6步是: keytool -genkey -alias testAlias -keyalg RSA -keystore test.truststore -validity 360

    可以導入使用上述步驟7(雖然我沒有在STEP 7中添加 「-alias apublickey」)。 這對我有用。

  • 0

    我在導入密鑰庫中的SSL證書時遇到了同樣的問題。在我的情況下,根CA的證書從鏈中失蹤。我將根證書導出到一個文件中並手動導入密鑰庫中。

    相關問題