Tomcat和SSL:密钥库格式无效

Nic*_*rts 2 java ssl-certificate tomcat6

启动Tomcat 6时出现以下问题:

[INFO] [talledLocalContainer] Caused by: java.io.IOException: Invalid keystore format
[INFO] [talledLocalContainer]   at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:633)
[INFO] [talledLocalContainer]   at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38)
[INFO] [talledLocalContainer]   at java.security.KeyStore.load(KeyStore.java:1185)
[INFO] [talledLocalContainer]   at org.springframework.ws.soap.security.support.KeyStoreFactoryBean.afterPropertiesSet(KeyStoreFactoryBean.java:123)
Run Code Online (Sandbox Code Playgroud)

我已经配置了KeyStoreFactoryBean来加载我的类路径中的密钥库,我自己使用java 1.6.0_05.

奇怪的是,当我使用Eclipse启动相同的Tomcat时,密钥库被加载而没有任何问题.如果我使用Cargo Maven插件启动Tomcat,我会遇到此异常.如果我在刚下载的Tomcat 6中安装该应用程序,我会得到一个特权.不幸的是,在我们的unix环境中部署应用程序时,我遇到了同样的异常.

我安装的唯一的jdk版本是1.6.0_05和1.6.0_23,但是我已经尝试了两个版本,它似乎没有区别.我也尝试过只有1.6.0_05的不同机器,也没用.在他的应用程序中使用相同密钥库的同事没有任何问题,他的Spring配置完全相同(不过认为问题就在那里).

查看JavaKeyStore(源代码)的源代码时,您可以看到它检查它从密钥库中读取的前两个int,以检查它的格式并抛出异常.我无法想象使用Eclipse启动Tomcat可能会导致这段代码以其他方式执行而不会抛出异常.

谷歌搜索也没有帮助我,很多人似乎得到这个例外,但通常是因为他们用旧版本的jdk制作了密钥库.

编辑:提供程序是"SUN版本1.6",类型是JKS.这两种情况都是一样的,工作和不工作.

Nic*_*rts 5

解决:maven构建过滤了证书(使用资源插件)并以某种方式更改了密钥库.从资源插件中排除密钥库解决了它.