有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Tomcat和SSL:密钥库格式无效

我在启动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)

我已经将KeystreactoryBean配置为在我的类路径中加载一个密钥库,这是我使用java 1.6.005创建的

奇怪的是,当我使用Eclipse启动同一个Tomcat时,密钥库的加载没有任何问题。如果我使用Cargo Maven插件启动Tomcat,就会出现这个异常。如果我在新下载的Tomcat 6中安装应用程序,我会得到额外的功能。不幸的是,在unix环境中部署应用程序时,我也遇到了同样的例外

我安装的jdk版本只有1.6.0_05和1.6.0_23,但我尝试了这两个版本,似乎没有什么不同。我也在另一台只有1.6.0_05的机器上试用过,但也没用。 在应用程序中使用相同密钥库的同事没有任何问题,他的Spring配置也完全相同(但不要认为问题就在那里)

在查看JavaKeyStore(source code)的源代码时,可以看到它检查从keystore读取的前两个int,以检查其格式并引发异常。我无法想象使用Eclipse启动Tomcat有什么不同,可能会导致这段代码以其他方式执行,而不会引发异常

谷歌搜索也帮不上我的忙,很多人似乎都遇到了这个例外,但通常是因为他们用较旧版本的jdk创建了密钥库

编辑:提供程序是“SUN version 1.6”,类型是JKS。这两种情况都是一样的,不管是有效的还是无效的


共 (1) 个答案

  1. # 1 楼答案

    解决方法:maven构建过滤了证书(使用资源插件),并以某种方式更改了密钥库。从资源插件中排除密钥库解决了这个问题