2017-01-01 41 views
1

我想要創建一個「公司」自簽名證書,該證書將用於簽署公司中的所有其他證書。我的目標是僅爲此使用Java keytool使用keytool創建服務器證書所需的最小步驟數

我的第一步是建立在企業的自簽名證書「​​組織範圍內的」 信任密鑰存儲:

keytool -genkeypair -keystore truststore.jks -storepass changeit -alias ca -keypass changeit -dname CN=ca,OU=dev,O=myorg

然後,我創建了另一個 - 服務器 - 證書它自己的服務器密鑰存儲,生成CSR,並最終與上述ca自簽名證書只是產生燒焦它:

keytool -genkeypair -keystore server.jks -storepass changeit -alias server -keypass changeit -dname CN=server,OU=dev,O=myorg

keytool -certreq -keystore server.jks -storepass changeit -alias server -keypass changeit -file server.csr

keytool -gencert -keystore truststore.jks -storepass changeit -alias ca -keypass changeit -infile server.csr -outfile server.cer

現在,當我試圖重新導入 - 在服務器密鑰存儲服務器證書 - 現在簽約:

keytool -importcert -keystore server.jks -storepass changeit -alias server -keypass changeit -file server.cer

我我得到了以下錯誤:

的keytool錯誤:java.lang.Exception的:無法從回覆

爲了克服建立連鎖,我從信任導出的自簽名證書,它導入到服務器密鑰存儲:

keytool -exportcert -keystore truststore.jks -storepass changeit -alias ca -keypass changeit -file ca.cer

keytool -importcert -keystore server.jks -storepass changeit -alias ca -keypass changeit -file ca.cer -noprompt

最後,再重新導入服務器證書,這一次成功。

雖然這可能會起作用,但我並不滿意該解決方案:導入自簽名證書,然後導入由其簽名的服務器證書。

我在尋找一個keytool操作順序,這將允許我生成一個證書請求,通過自簽名證書對其進行簽名,並將該證書導入密鑰存儲區,而不需要導入根證書:服務器證書應該成爲服務器商店中唯一的證書。

我不想使用openssl這樣的目的,既不想涉及cacerts。可能嗎?

回答

0

從我所看到的,您需要導入CA證書的公鑰以導入簽名證書。不知道如果你將它刪除後會發生什麼......我的猜測是它會破壞證書。在服務器證書中使用cacert有什麼問題?

This post包含使用keytool創建CA證書,服務器證書,客戶端證書和信任存儲的Windows Power Shell腳本。它包括可能有用的擴展......值得一看。

希望這會有所幫助。

最好, 王牌