我想在带有 p7b 证书的 Spring Boot Java 应用程序中启用 https。
server.ssl.key-store=cert.p7b
server.ssl.keyStoreType=PKCS7
但是不支持 PKCS7,这就是为什么我尝试将其转换为 java key 存储文件(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),您需要私钥
以及您拥有的 p7b 证书链。
这就是 p7b 的发行方式:
- 首先创建 key 对(私钥和公钥)
- 根据上面创建的 key 对创建 CSR (PKCS#10)
- 将 CSR 发送给证书颁发机构 (CA) 进行签名
- CA 对其进行签名并提供 p7b (PKCS#7) 格式的证书链
以下是您收到 p7b 后执行的步骤:
- 将证书链 (p7b) 与您在第一步中创建的私钥相关联。
现在您将拥有一个签名 key 对,可用于保护您的应用程序。
要回答您的问题,您需要找到您最初创建的 keystore ,其中包含私钥和公钥(自签名证书)。然后使用 keytool 将证书链 (p7b) 导入/关联到私钥。
如果您设法找到包含私钥的 keystore ,则可以简单地运行此keytool
命令来关联证书链。
keytool -importcert -keystore [KEYSTORE] -storepass [KEYSTORE_PASSWORD] -file [P7B_FILE] -trustcacerts -alias [ALIAS_OF_KEY_PAIR] -keypass [KEY_PAIR_PASSWORD].
导入后,这将是您用来保护 SpringBoot 应用程序的 keystore 。
关于java - 使用 P7B 证书在 Spring Boot Java 应用程序中启用 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59285595/