我对 Spring Boot 中的 ssl 有一些疑问。 我有文件认证和私钥,扩展名为 .crt 和 .key。我怎样才能从他们那里获得像这样的 Spring Boot 设置的正确格式
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=password
server.ssl.key-alias=tomcat
要将证书文件和私钥转换为 PKCS#12(.p12) 格式,请使用以下命令:
openssl pkcs12 -export -out certificate.p12 -inkey privateKey.key -in certificate.crt -certfile CACert.crt
请浏览以下链接,以供您在 Spring Boot 中处理 https 时参考。
我找到了解决方案。我使用这个命令得到了密钥库:
openssl pkcs12 -export -in <mycert.crt> -inkey <mykey.key> -out keystore.p12 -name <alias>
并将密钥库添加到 application.properies
#ssl
server.port=8443
server.ssl.enabled=true
server.ssl.key-store-type=PKCS12
**server.ssl.key-store=keystore/keystore.p12**
server.ssl.key-store-password=password
server.ssl.key-alias=alias
这是正确的配置。当我使用 classpath:keystore.p12 时它不起作用。也许是因为我使用 Spring Boot 2。然后我创建了外部文件夹并放入密钥库中。现在它正在工作。
另一种选择:如果您没有(或不喜欢?)OpenSSL,https://keystore-explorer.org/(与 keytool 不同)可以将私钥+证书读取到任何类型的 Java 密钥库( PKCS12、JCEKS、JKS 等,但 PKCS12 通常是最好的),带有“导入密钥对”图标或菜单项。
您可以设置扩展名为.crt和.key的证书和私钥。与 SpringBoot 3.1+ 中一样
server.port=443
server.ssl.enabled=true
server.ssl.certificate=file:/certs/tls.crt
server.ssl.certificate-private-key=file:/certs/tls.key