【发布时间】:2017-12-11 00:06:39
【问题描述】:
想在我的 Spring Boot(1.3.2.RELEASE) 应用程序中引入 HTTPS 协议(可信证书)。 为此尝试了下一个 SSL 属性:
server.ssl.trust-store=classpath:key.jks
server.ssl.trust-store-password=pass
并有错误:
Caused by: java.lang.IllegalArgumentException: Resource location must not be null
at org.springframework.util.Assert.notNull(Assert.java:115) ~[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.util.ResourceUtils.getURL(ResourceUtils.java:131) ~[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.configureSslKeyStore(TomcatEmbeddedServletContainerFactory.java:340) ~[spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.configureSsl(TomcatEmbeddedServletContainerFactory.java:323) ~[spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]
在该错误中,您可以看到应该传递 configureSslKeyStore。 当我尝试使用下一组更改启动应用程序时:
server.ssl.key-store=classpath:key.jks
server.ssl.key-store-password=pass
server.ssl.trust-store=classpath:key.jks
server.ssl.trust-store-password=pass
所以现在我有几个问题:
- 这种行为的原因是什么,该协议不受支持?(证书是新的并且没有过时)
- 没有冗余属性就无法配置受信任的证书是否正确?
- 是否有其他更方便的方式来配置受信任 SSL?
更新:
它是 JAR 文件,其中存在证书 classpath:key.jks"".
【问题讨论】:
-
添加您将证书和匹配的私钥导入 jks 所采取的步骤。
-
告诉我们
key.jks文件在.war文件的什么位置。 NB 您不应该使用相同的文件作为密钥库和信任库。它们的用途完全不同。 -
证书存在于 Spring Boot JAR 文件中,而不是 WAR。 “将私钥匹配到 jks 中?”你能解释一下你的意思吗?
-
“那么请告诉我们 key.jks 在 Spring Boot JAR 文件中的位置”问题是:server.ssl.trust-store=classpath:key.jks
-
类路径:key.jks。绝对路径为:C:\project\src\main\resources\key.jks。对我的问题有影响吗?
标签: java spring-boot spring-security https ssl-certificate