当尝试使用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,可以确认所有配置正确。
答案 0 :(得分:0)
奇怪的是,这似乎是POM / Maven问题。
通过将资源过滤设置为false,应用程序开始以正确的顺序设置其所有变量。
<resource>
<directory>src/main/java/resources</directory>
<filtering>false</filtering>
</resource>