Spring Boot Application SSL属性配置:setKeyStorePassword之前的getKeyStorePassword

时间:2019-02-21 01:14:52

标签: 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.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值的顺序令人担忧。我看到“设置”调用之前有“获取”调用(特别是getKeyStorePassword之前的setKeyStorePassword)。这不好!

这似乎是一个非常奇怪的弹簧错误,它与自身竞争以设置和获取值。在这种情况下,即使最终使用正确的值,SSL配置也会失败,因为在设置它们之前就已经对它们进行了访问。有人可以强调为什么会这样并且可能的解决方法吗?

我们正在使用Spring 1.5.12,可以确认所有配置正确。

1 个答案:

答案 0 :(得分:0)

奇怪的是,这似乎是POM / Maven问题。

通过将资源过滤设置为false,应用程序开始以正确的顺序设置其所有变量。

<resource>
   <directory>src/main/java/resources</directory>
   <filtering>false</filtering>
</resource>