Java Spring引导应用程序SSL属性配置:setKeyStorePassword之前的getKeyStorePassword
在尝试使用spring boot和tomcat配置HTTPS/SSL功能时,我开始看到以下错误:Java Spring引导应用程序SSL属性配置:setKeyStorePassword之前的getKeyStorePassword,java,spring-boot,ssl,Java,Spring Boot,Ssl,在尝试使用spring boot和tomcat配置HTTPS/SSL功能时,我开始看到以下错误: Caused by: java.lang.IllegalArgumentException: Invalid keystore format at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:116) at org.apache.t
Caused by: java.lang.IllegalArgumentException: Invalid keystore format
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:116)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:87)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:225)
at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1150)
at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:591)
at org.apache.catalina.connector.Connector.startInternal(Connector.java:1018)
... 22 common frames omitted
进一步挖掘,我看到了类SSL.java
被填充的顺序(SSL.java
是配置的基本POJO)。
访问POJO获取值的顺序令人震惊。我在“set”调用之前看到了“get”调用(特别是getKeyStorePassword
在setKeyStorePassword
之前)。这可不好
这似乎是一个非常奇怪的spring错误,它与自身竞争来设置和获取值。在这种情况下,即使正确的值最终到位,SSL配置也会失败,因为这些值是在设置之前访问的。有人能强调一下为什么会出现这种情况以及可能的解决办法吗
我们使用的是Spring1.5.12,可以确认所有配置都是正确的。奇怪的是,这似乎是POM/Maven的问题 通过将资源筛选设置为false,应用程序开始按正确的顺序设置其所有变量
<resource>
<directory>src/main/java/resources</directory>
<filtering>false</filtering>
</resource>
src/main/java/resources
假的