在具有P7B证书的Spring Boot Java应用程序中启用HTTPS

问题描述 投票:0回答:2

我想在具有p7b证书的Spring Boot Java应用程序中启用https。

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

但是不支持PKCS7,这就是为什么我尝试将其转换为Java密钥存储文件(JKS),但失败的原因。

首先,我尝试使用钥匙工具将其导入

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

非常感谢您的帮助

java openssl keystore jks
2个回答
1
投票

为了保护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]-文件[P7B_FILE] -trustcacerts -alias [ALIAS_OF_KEY_PAIR] -keypass [KEY_PAIR_PASSWORD]。

导入后,这将是您用来保护SpringBoot应用程序的密钥库。


1
投票

扩展名p7b文件仅包含证书链,因此PKCS7不是有效的密钥库类型。

由于您已经生成了证书,因此别无选择,只能获取相应的私钥。否则,您可以使用诸如OpenSSL之类的工具来创建新的自签名证书/密钥对。或者,如果您喜欢的话,也可以生成CSR并由CA对其进行签名。

© www.soinside.com 2019 - 2024. All rights reserved.