Ssl

即使我添加了中間證書,它也不在密鑰庫中

  • May 20, 2019

我的任務是在伺服器中設置一個 ssl,該伺服器使用 wildfly,所以我必須創建一個密鑰庫,其中包含我獲得的所有證書、伺服器證書、中間證書和密鑰文件。

首先,我將伺服器證書和中間證書連結起來,然後我使用 openssl 創建了一個 pkc12 文件。然後我使用 keytool 從該 pkc12 文件創建一個密鑰庫。

問題是當我打開密鑰庫文件或 pkc12 文件時,我發現它不包含中間證書,它只有伺服器證書。我以前做過這個程序並且它有效

任何人都知道問題可能是什麼?

額外資訊:中間證書有點舊(從 2010 年開始)並且使用 sha1 並且將在 9 個月後過期,這很奇怪,不像我的伺服器證書是新的並使用 sha256。

顯然您的問題可能是錯誤的中間證書。

確保您擁有正確的中間證書。

  • 對伺服器證書執行以下命令:
openssl x509 -noout -text -in server.pem | grep 'CA Issuers'
  • 然後打開 grep 找到的 URL:
wget http://url/ -O intermediate.der
  • 將下載的證書轉換為 PEM 格式:
openssl x509 -in intermediate.der -inform DER -outform PEM -out intermediate.pem

現在您確定這intermediate.pem是您的伺服器證書的正確中間證書。

假設鏈中只有一個中間證書。如果還有更多,則需要重複上述命令intermediate.pem以獲取intermediate2.pem等等。

執行以下命令來創建 JKS 儲存。

  • 創建證書包:
cat server.pem intermediate.pem > bundle.pem
  • 創建 pfx/pkcs12 格式包:
openssl pkcs12 -export -out bundle.pfx -inkey server.key -in bundle.pem
  • 創建 JKS 密鑰庫:
keytool -importkeystore -srckeystore bundle.pfx -srcstoretype pkcs12 -destkeystore store.jks -deststoretype JKS
  • 檢查密鑰庫:
keytool -v -list -keystore store.jks

您應該會看到以下列表:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: 1
Creation date: May 19, 2019
Entry type: PrivateKeyEntry
Certificate chain length: 2
Certificate[1]:
Owner: CN=example.com
Issuer: CN=Let's Encrypt Authority X3, O=Let's Encrypt, C=US
...
Certificate[2]:
Owner: CN=Let's Encrypt Authority X3, O=Let's Encrypt, C=US
Issuer: CN=DST Root CA X3, O=Digital Signature Trust Co.
...

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