使用 P7B 证书在 Spring Boot Java 应用程序中启用 HTTPS
Enable HTTPS in a Spring Boot Java application with a P7B certificate
我想使用 p7b 证书在 spring 启动 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
非常感谢任何形式的帮助
为了保护您的 SpringBoot 应用程序(启用 HTTPS),您需要 private key
以及您拥有的 p7b 证书链。
这是 p7b 的发行方式:
- 首先你创建一个密钥对(私钥和一个 public 密钥)
- 从上面创建的密钥对创建 CSR (PKCS#10)
- 将 CSR 发送到证书颁发机构 (CA) 以进行签名
- CA 对其签名并以 p7b (PKCS#7) 格式返回证书链
这些是您收到 p7b 后执行的步骤:
- 将证书链 (p7b) 关联到您在第一步中创建的私钥。
现在您将拥有一个签名密钥对,您可以使用它来保护您的应用程序。
要回答您的问题,您需要找到您最初创建的密钥库,其中包含私钥和 public 密钥(自签名证书)。然后你 import/associate 使用 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 等工具创建新的自签名 cert/key 对。或者生成一个 CSR 并由 CA 签名,如果你喜欢的话。
我想使用 p7b 证书在 spring 启动 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
非常感谢任何形式的帮助
为了保护您的 SpringBoot 应用程序(启用 HTTPS),您需要 private key
以及您拥有的 p7b 证书链。
这是 p7b 的发行方式:
- 首先你创建一个密钥对(私钥和一个 public 密钥)
- 从上面创建的密钥对创建 CSR (PKCS#10)
- 将 CSR 发送到证书颁发机构 (CA) 以进行签名
- CA 对其签名并以 p7b (PKCS#7) 格式返回证书链
这些是您收到 p7b 后执行的步骤:
- 将证书链 (p7b) 关联到您在第一步中创建的私钥。
现在您将拥有一个签名密钥对,您可以使用它来保护您的应用程序。
要回答您的问题,您需要找到您最初创建的密钥库,其中包含私钥和 public 密钥(自签名证书)。然后你 import/associate 使用 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 等工具创建新的自签名 cert/key 对。或者生成一个 CSR 并由 CA 签名,如果你喜欢的话。