Spring Boot - 启用和配置 SSL 证书

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

我拥有此证书/文件以便为我的应用程序启用 SSL:

我发现 Spring Boot 启用 HTTPS 需要这个属性:

server.port=8089
server.ssl.enabled=true
server.ssl.key-store=src/main/resources/keystore.p12
server.ssl.key-store-password=****
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=tomcat

但这不起作用。我现在的问题是我必须做什么才能让它发挥作用? https://abc.lehr.co.at 应该是 URL。

[编辑]

我创建了自己的密钥库 - 这样我得到了以下异常:

java.io.IOException: Alias name tomcat does not identify a key entry
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:596)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:534)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:363)
at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:739)
at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:472)
at org.apache.coyote.http11.Http11NioProtocol.start(Http11NioProtocol.java:81)
at org.apache.catalina.connector.Connector.startInternal(Connector.java:986)

我的密钥库看起来像这样:

实际上我不知道要向嵌入式tomcat(Spring Boot)的密钥库导入什么。

ssl spring-boot https
6个回答
17
投票

要启用 SSL,您必须提供私钥,而不是受信任的证书。

在您的密钥库中,“tomcat”应列为 privatekeyentry 的别名,而不是 trustedcertentry


3
投票

您必须将私钥打包到具有指定别名的 PFX 文件或 P12 中。因此,加载材料后会从 keyStore 中相应地获取它。

使用此工具找出别名是什么:

keytool -list -storetype pkcs12 -keystore my_debug_keystore.p12 -storepass debug

2
投票
server.port=8089
server.ssl.enabled=true
server.ssl.key-store=src/main/resources/keystore.p12
server.ssl.key-store-password=****
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=tomcat << This should be the alias of yourfile.12 if you have forgotten just create a new one and replace it>>

不要忘记添加

security.require-ssl=true <<Tell Spring Security (if used) to require requests over HTTPS>>

0
投票

我建议您以 JKS 格式创建 KeyStore:

 keytool -genkey -keyalg RSA -alias my_alias -keystore keystore.jks -storepass password -validity 360 -keysize 2048

然后添加配置:

server.port=8089
server.ssl.enabled=true
server.ssl.key-store=src/main/resources/keystore.jks
server.ssl.key-store-password=****
server.ssl.keyStoreType=JKS
server.ssl.keyAlias=my_alias

0
投票

首先,您可以将 .pem 文件转换为 DER,然后生成密钥库。 请参阅https://stackoverflow.com/a/13992135/16358980如何执行此操作。

在您的 application.properties 中,将密钥库属性更改为您生成的密钥库文件:

server.ssl.key-store=<your-generated-keystore>

0
投票

如果您在设置 SSL 时在 Spring Boot 版本 3.x 应用程序中遇到错误“java.lang.IllegalStateException:SSL 已启用但未配置信任材料”,则可能您错过了财产

server.ssl.bundle=服务器

此处的值“server”是捆绑包的名称,如下所示

spring.ssl.bundle.jks.server.key.alias=serverCert spring.ssl.bundle.jks.server.keystore.location=classpath:证书/server.key spring.ssl.bundle.jks.server.keystore.password=changeit spring.ssl.bundle.jks.server.keystore.type=PKCS12

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