【问题标题】:java.io.IOException: Invalid keystore format using Tomcat serverjava.io.IOException:使用 Tomcat 服务器的密钥库格式无效
【发布时间】:2012-04-21 16:48:41
【问题描述】:

在 Tomcat 7 中启用 ssl 模式时,我的 tomcat 日志中出现以下错误

我已经使用 openssl 生成了 .key 文件,如下所示

openssl genrsa -des3 -out localhost 2048

我在 tomcat server.xml 中给出了我的密钥文件的路径

严重:无法初始化与 ProtocolHandler 关联的端点 ["http-bio-8443"] java.io.IOException: 无效的密钥库格式

【问题讨论】:

    标签: java tomcat ssl keytool


    【解决方案1】:

    openssl genrsa -des3 -out localhost 2048 生成一个私钥。使用 HTTPS 运行 Web 服务器所需的是私钥和证书。您需要一个步骤来生成证书。

    您可以使用 2 种几乎完全不同的方法在 Tomcat 中配置 HTTPS,具体取决于您是否使用 APR 连接器。

    如果您使用的是APR connector,那么使用 OpenSSL 来生成密钥/证书是有意义的,因为它是它所期望的格式。 (如果自签名证书足以满足您的环境,则有许多教程可以使用 OpenSSL 生成自签名证书。)

    If you're not using APR,您必须将使用 OpenSSL 生成的密钥/证书转换为 JRE 支持的密钥库格式。来自 OpenSSL,将您的私钥 + 证书转换为 PKCS#12 存储 (.p12) 通常是最简单的:这通过 Oracle/OpenJDK 直接支持 PKCS12 密钥库类型。 (您可以将 PKCS#12 文件转换为 JKS 存储,但这不是必需的。)

    但是,如果您还没有任何密钥/证书,为 Tomcat 生成自签名证书的最简单方法是直接使用keytool。这将生成一个JKS 密钥库,这是默认类型。 keytool -genkey 不仅会生成一个密钥/对并足以生成 CSR,而且它还会关联一个自签名证书(至少是暂时的,直到您在必要时导入来自 CA 的证书)。

    【讨论】:

      【解决方案2】:

      基于 Java 的系统,包括 tomcat,需要以 PKCS 格式存储。因此,首先您需要正确构建您的商店,然后按照 tomcat 指南配置 tomcat 以使用它们。您的商店格式和配置似乎不正确。

      【讨论】:

      • 这不是真的。首先,这取决于您是否使用 APR。其次,默认的密钥库类型仍然是 JKS。原则上,可以使用安全提供者之一支持的任何密钥库类型,因此它取决于提供者。在 Oracle/OpenJDK(使用 Sun 提供程序)上,您可以使用 JKS、PKCS#12、PKCS#11 和 NSS。
      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 2014-11-22
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      • 2022-12-14
      相关资源
      最近更新 更多