簡體   English   中英

使用 P7B 證書在 Spring Boot Java 應用程序中啟用 HTTPS

[英]Enable HTTPS in a Spring Boot Java application with a P7B certificate

我想在帶有 p7b 證書的 Spring Boot Java 應用程序中啟用 https。

server.ssl.key-store=cert.p7b
server.ssl.keyStoreType=PKCS7

但是不支持 PKCS7,這就是為什么我嘗試將其轉換為 Java 密鑰存儲文件 (JKS),但我失敗了。

首先我嘗試使用key工具導入它

keytool -importcert -trustcacerts -file cert.p7b -keystore newkeystore.jks –storetype JCEKS

但我得到一個例外

java.lang.Exception: Input not an X.509 certificate

然后我嘗試將其轉換為 pem 文件,該文件有效

openssl pkcs7 -inform der -print_certs -in cert.p7b -out cert.pem

但后來未能將其轉換為 jks 文件,因為我沒有私鑰。

keytool -importcert -trustcacerts -file cert.pem -keystore newkeystore.jks –storetype JCEKS

任何形式的幫助都受到高度贊賞

為了保護您的 SpringBoot 應用程序(啟用 HTTPS),您需要private key以及您擁有的 p7b 證書鏈。

這是 p7b 的發布方式:

  • 首先創建一個密鑰對(私鑰和公鑰)
  • 從上面創建的密鑰對創建一個 CSR (PKCS#10)
  • 將 CSR 發送到證書頒發機構 (CA) 以進行簽名
  • CA 給它簽名並以 p7b (PKCS#7) 格式返回一個證書鏈

這些是您收到 p7b 后執行的步驟:

  • 將證書鏈 (p7b) 與您在第一步中創建的私鑰相關聯。

現在您將擁有一個簽名的密鑰對,您可以使用它來保護您的應用程序。

要回答您的問題,您需要找到您首先創建的密鑰庫,其中包含私鑰和公鑰(自簽名證書)。 然后使用 keytool 將證書鏈 (p7b) 導入/關聯到私鑰。

如果您設法找到包含私鑰的密鑰庫,您可以簡單地運行此keytool命令來關聯證書鏈。

keytool -importcert -keystore [KEYSTORE] -storepass [KEYSTORE_PASSWORD] -file [P7B_FILE] -trustcacerts -alias [ALIAS_OF_KEY_PAIR] -keypass [KEY_PAIR_PASSWORD]。

導入后,這將是您用來保護 SpringBoot 應用程序的密鑰庫。

擴展 p7b 文件僅包含證書鏈,因此 PKCS7 不是有效的密鑰庫類型。

由於您已經生成了證書,因此您別無選擇,只能獲取相應的私鑰。 否則,您可以使用 OpenSSL 等工具創建新的自簽名證書/密鑰對。 或者,如果您喜歡這種方式,可以生成 CSR 並由 CA 對其進行簽名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM