Ssl

我可以將 CA 創建的 SSL 證書導入我的 Java 密鑰庫嗎?

  • July 16, 2015

我正在嘗試將 CA 簽名證書導入 Java 密鑰庫。我可以找到的所有說明都告訴我首先使用 Java 密鑰工具創建一個密鑰庫和一個簽名請求 (CSR),然後讓 CA 簽署 CSR,然後將簽名的證書導入回密鑰庫。

好吧,愚蠢的我沒有閱讀精美的手冊,而是讓 CA 為我線上創建證書,而不是上傳我自己的 CSR。現在我有:

  • ca.pemCA的根證書
  • sub.class1.server.ca.pemCA的中間證書
  • mydomain.crt我的域的簽名證書,由 CA 創建
  • mydomain.key我的證書的私鑰文件,由 CA 創建

我嘗試將證書導入到我的密鑰庫,如下所示:

keytool -import -trustcacerts -alias root -file ca.pem -keystore mykeystore.jks
keytool -import -trustcacerts -alias intermediate -file sub.class1.server.ca.pem -keystore mykeystore.jks
keytool -import -alias mydomain mydomain.crt -keystore mykeystore.jks

所以密鑰庫的內容現在看起來像這樣:

intermediate, Jul 16, 2015, trustedCertEntry, 
Certificate fingerprint (SHA1): 0A:D3:...
root, Jul 16, 2015, trustedCertEntry, 
Certificate fingerprint (SHA1): 3E:2B:...
mydomain, Jul 16, 2015, trustedCertEntry, 
Certificate fingerprint (SHA1): 18:F2:...
selfsigned, Feb 4, 2015, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 2B:74:...

不幸的是,當使用“mydomain”別名時,我試圖保護的服務(JIRA 伺服器)無法訪問。當我使用“selfsigned”別名時,這是我之前從密鑰庫創建的自簽名證書,所有其他設置都相同,可以很好地訪問服務(除了關於自簽名證書的警告,課程); 所以我認為問題在於 CA 生成的證書。

我嘗試按照此執行緒中的建議連接 mydomain.crt 和 mydomain.key 文件但沒有成功: 導入 PEM 證書鍊和 Java 密鑰庫的密鑰

有什麼我可能做錯了嗎?是否可以將第三方創建的證書導入現有的 Java 密鑰庫?或者我是否需要撤銷該證書並使用從我的密鑰庫中提取的自製 CSR 再次完成該過程?

我過去通過使用 PKCS12 密鑰庫來做到這一點:

cat ca.pem sub.class1.server.ca.pem > chain.pem
openssl pkcs12 -export -inkey mydomain.key -certfile chain.pem \
     -out mydomain.p12 -in mydomain.pem -name mydomain

之後,通過將密鑰庫類型指定為 PKCS12 或使用 keytool 轉換為 JKS 直接使用它:

keytool -importkeystore -srckeystore mydomain.p12 \
     -srcstoretype PKCS12 -deststoretype JKS -destkeystore mydomain.jks

引用自:https://serverfault.com/questions/706297