【问题标题】:Tomcat and SSL: invalid keystore formatTomcat 和 SSL:无效的密钥库格式
【发布时间】:2011-02-17 11:20:06
【问题描述】:

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

我已将 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 (source code) 的源代码时,您可以看到它会检查从密钥库中读取的前两个整数,以检查其格式并引发异常。我无法想象使用 Eclipse 启动 Tomcat 有什么不同可能会导致这段代码以其他方式执行而不抛出异常。

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

编辑:提供者是“SUN 版本 1.6”,类型是 JKS。这两种情况都是一样的,工作和不工作。

【问题讨论】:

  • 只是猜测,会不会是密码错误造成的?此外,我会尝试编写一个小型 Java 应用程序来加载商店,看看有什么用。特别是这将确保使用的引擎类型,例如 KeyStore.getInstance("JKS");
  • 密码无效会导致“Caused by: java.io.IOException: Keystore was tampered with, or password is wrong”。编写一个小应用程序是个好主意。

标签: java tomcat6 ssl-certificate


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-09-26
    • 2016-01-16
    • 1970-01-01
    • 2016-01-24
    • 2014-11-22
    • 2015-04-06
    • 1970-01-01
    • 2023-03-20
    • 2015-10-07
    相关资源
    最近更新 更多