2015-04-01 189 views
0

我創建了一個csr文件,並將該文件發送給我的證書小組,他們給出了鏈式cer(內部有效證書)文件,我嘗試使用Ikeyman接收cer文件,但它不會讓我接受,我用keytool命令如何將cer文件導入到jks文件

的keytool -import -alias -trustcacerts開發-file test.cer -keystore key.jks

它的證書添加到簽名區,但這應該是在個人部分。

任何人都可以幫助我如何添加一個cer鏈證書到JKS個人部分。

+0

你是什麼意思的「個人部分」? JKS文件沒有章節,只有一個或多個條目。有兩種類型的條目:privateKeyEntry和trustedCert。每個都由「別名」標識。如果您有一個privateKey條目(您必須生成CSR),並且您會收到該密鑰的證書或鏈(您使用CSR獲取該證書),並且您希望將該證書鏈用於SSL等事情,那麼您需要將該證書鏈(文件)*導入該私鑰條目*。 – 2015-04-02 03:19:50

+0

謝謝戴夫,我嘗試導入cer文件到jks中,運行keytool命令(keytool -import -trustcacerts -alias dev -file test.cer -keystore key.jks)後,我在Ikeyman中打開我的jks,證書被添加,它被添加到歌手證書上,但它應該在個人證書上。我需要使用相同的JKS文件,我創建csr文件來導入這個cer文件,或者我可以使用任何JKS – 2015-04-02 07:22:43

回答

0

您的術語仍然不夠標準,也不清楚,因此我將介紹基礎知識並確定問題所在。

要使用「自己的」證書,這是屬於你的,在Java中的基本/一般密鑰庫專用密鑰的證書,你需要有都在一個JKS文件中的一個專用密鑰進入

  • 您的專用密鑰
  • 結合你的公鑰給您的證書,(通常)由CA(認證機構)印發給你們,正式稱爲「終端實體」證書,
  • 從您的EE證書到受信任的CA「根」或「錨」證書形成驗證「鏈」所需的可能但很少沒有任何證書(通常是一個或一些其他證書)來標識一個或多個CA 。這些證書被正式稱爲「中級」證書,但由於它們被用來形成一個連鎖,所以它們通常被稱爲「連鎖」證書。

,並避免默認爲JRE/lib/security/cacerts雖然可以修改虛假的錯誤,你還必須有相關的根/錨證書在您的信任。如果您的證書是由知名的CA(如Verisign或GoDaddy)使用其根源發佈的,那麼在安裝Java時除非您(或您的管理員等人)有意刪除它們,否則它們將包含在Java中。如果您的證書由獨立的私人CA(例如您所工作的企業或政府機構運營的CA)頒發,則其根應該安裝在您的Java中;這可能已經完成(可能是由您的管理員或您以前的),或者您現在可能需要這樣做。

這允許您使用證書(和鑰匙,這是落實協議需要),以證明在應用您的身份,如SSL/TLS客戶端(或服務器使用PFS)或發送簽名的電子郵件,或者對數據進行解密對您進行PK加密,如SSL/TLS服務器或接收加密電子郵件。

直接的方式做到這一點是導入一個文件,其中包含新的EE證書和鏈證書(S),要麼只是一個PEM序列或p7b格式,您用於生成相同的專用密鑰進入 CSR;這意味着相同的JKS文件相同的條目,用-alias指定或可能默認爲mykey。你可以改爲使用JKS的副本或另一個包含privateKey條目副本的JKS(可能除了其他條目之外還可能重命名),但是做這樣的事情你可能很容易混淆你自己。如果你這樣做是正確的,keytool應該說Certificate reply was installed in keystore不是Certificate was added to keystore

如果您沒有且無法獲得所有證書 - 您的EE證書和連鎖證書 - 在一個適用於上述文件的文件中,您必須執行一個稍微複雜的過程:

  • 進口鏈條證書(S),如果多一個從上往下的時候,使用不同 trustedCert在你的密鑰倉庫項(或任意你cacerts代替,但是這通常是一個壞主意)和唯一的別名不是privateKey別名;此步驟應該說Certificate was added to keystore

  • 然後將您的EE證書導入privateKey條目(別名)。 keytool會將鏈證書添加到privateKey條目中。這被稱爲構建鏈,如果你做錯了,你會得到一個關於「無法建立鏈」的錯誤。這一步應該說是Certificate reply was installed in keystore