2015-06-04 97 views
9

我想在Java創建證書鏈如下:如何使用keytool創建證書鏈?

ca.mycompany.com 
|--asia.mycompany.com 
    |--india.mycompany.com 

其中ca.mycompany.com是根證書(自簽名)。

我知道這是可能的OpenSSL。但是有可能通過keytool來實現這一點嗎?

如果不是,我可以通過Mozilla NSS庫實現嗎?

+1

不可以。您只能創建自簽名證書,而不能創建鏈。您可以*從其他地方導入鏈。 – EJP

回答

20

有一個在keytool documentation,顯示如何做到這一點的例子:

keytool -genkeypair -keystore root.jks -alias root -ext bc:c 
keytool -genkeypair -keystore ca.jks -alias ca -ext bc:c 
keytool -genkeypair -keystore server.jks -alias server 

keytool -keystore root.jks -alias root -exportcert -rfc > root.pem 
keytool -storepass <storepass> -keystore ca.jks -certreq -alias ca | keytool -storepass <storepass> -keystore root.jks -gencert -alias root -ext BC=0 -rfc > ca.pem 

cat root.pem ca.pem > cachain.pem 
keytool -keystore ca.jks -importcert -alias ca -file cachain.pem 

keytool -storepass <storepass> -keystore server.jks -certreq -alias server | keytool -storepass <storepass> -keystore ca.jks -gencert -alias ca -ext ku:c=dig,keyEncipherment -rfc > server.pem 
cat root.pem ca.pem server.pem > serverchain.pem 
keytool -keystore server.jks -importcert -alias server -file serverchain.pem 

您還可以KeyStore Explorer生成證書鏈很容易:

  1. 創建一個新的密鑰對,這意味着創建一個自簽名證書(根CA)。
  2. 右鍵單擊根CA證書並選擇「簽署新密鑰對」,這將創建子CA證書和密鑰對。
  3. 右鍵單擊子CA證書並再次選擇「簽署新密鑰對」。

Signing a new certificate

產生的鏈條:

enter image description here

+0

你的指令第6步給我'的keytool錯誤:java.lang.Exception的:(s鏈路在我的答案)無法從reply' – Stewart

+0

@Stewart那些建立鏈不_my_說明,他們是從官方keytool文檔複製。無論如何,我已經解決了這個問題。 – Omikron

+0

我明白你所做的。 Root和CA一起作爲鏈條導入。 – Stewart

相關問題