如何從憑證鏈匯出私鑰?

如何從憑證鏈匯出私鑰?

我建立一個金鑰庫,並從該金鑰庫產生一個 CSR 文件,當我從 CA 收到簽署憑證時,我將根憑證和中間憑證匯入到我的金鑰庫,最後匯入我的簽章憑證。新增簽章憑證後,我收到「憑證回覆已安裝在金鑰庫中」回應。在這種格式中,我可以在 Tomcat 中使用我的金鑰庫,但是,對於另一個應用程式容器,我只需要包含 pem 編碼檔案的私鑰。和

keytool -importkeystore -srckeystore server.jks -destkeystore server.pkcs -srcstoretype JKS -deststoretype PKCS12

openssl pkcs12 -in server.pkcs -out server.pem

似乎不起作用。我收到一個 pem 文件,其中僅包含證書資訊而不包含私鑰。

那麼建立憑證鏈後是否可以匯出私鑰呢?如果是怎麼辦?

答案1

您使用的 openssl pkcs12 命令也應該匯出私鑰

openssl pkcs12 -in server.pkcs -out server.pem

我猜 p12 輸入檔不包含私鑰。

您確定從 p12 檔案匯出金鑰時沒有出現某種警告嗎?

重要的一件事是,JKS 似乎支援單獨的金鑰密碼和儲存密碼。從 JKS 匯出 p12 時,p12 的密碼可能與金鑰的密碼不同。 openssl 似乎不支援這一點(剛剛嘗試過),並導致「解密錯誤」錯誤。您應確保密鑰密碼與 p12 密碼相同。

答案2

我使用以下查詢從憑證鏈匯出私鑰,

keytool -importkeystore -srckeystore server.jks -destkeystore server.pkcs 
-srcstoretype JKS -deststoretype PKCS12

openssl pkcs12 -in thekeystore.p12 -nocerts -nodes -out serverkey.pem

所以唯一的區別是添加-nodes -nocerts參數,它就像一個魅力,這也適用於自簽名證書

相關內容