我想要創建一個「公司」自簽名證書,該證書將用於簽署公司中的所有其他證書。我的目標是僅爲此使用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
。可能嗎?