java - 使用 P7B 证书在 Spring Boot Java 应用程序中启用 HTTPS

标签 java openssl keystore jks

我想在带有 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/

相关文章:

Java 泛型 : Explanation of Example on SO

java - HashMap,其中键的顺序很重要

qt - 使用QSslSocket时无法解析的功能

parsing - 如何使用 Go 从专有名称中提取通用名称?

java - Java keystore 可以导入 OpenSSL 生成的 key 对吗?

tomcat - Keytool 无法链接导入的 PKCS12 证书?

java - 在多个窗口中使用 JMenus 击键?

java - HA Karaf 酒窖群

配置在静态 Tor 编译期间不读取 --with-openssl-dir

java - 一旦删除了 ArrayList 中的某些对象,如何访问其中的特定对象?