![如何從憑證鏈匯出私鑰?](https://rvso.com/image/1414689/%E5%A6%82%E4%BD%95%E5%BE%9E%E6%86%91%E8%AD%89%E9%8F%88%E5%8C%AF%E5%87%BA%E7%A7%81%E9%91%B0%EF%BC%9F.png)
我建立一個金鑰庫,並從該金鑰庫產生一個 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
參數,它就像一個魅力,這也適用於自簽名證書