java.io.IOException:使用Tomcat服务器的密钥库格式无效

java.io.IOException:使用Tomcat服务器的密钥库格式无效,java,tomcat,ssl,keytool,Java,Tomcat,Ssl,Keytool,在Tomcat 7中启用ssl模式时,我的Tomcat日志中出现以下错误 我使用openssl生成了.key文件,如下所示 openssl genrsa -des3 -out localhost 2048 我在tomcat server.xml中给出了我的密钥文件的路径 严重:未能初始化与ProtocolHandler关联的端点 [“http-bio-8443”]java.io.IOException:密钥存储格式无效 基于Java的系统,包括tomcat,需要PKCS格式的存储。因此,首先需

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

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

openssl genrsa -des3 -out localhost 2048
我在tomcat server.xml中给出了我的密钥文件的路径

严重:未能初始化与ProtocolHandler关联的端点 [“http-bio-8443”]java.io.IOException:密钥存储格式无效


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

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

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

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

,则必须将OpenSSL生成的密钥/证书转换为JRE支持的密钥库格式。从OpenSSL开始,将私钥+证书转换为PKCS#12存储(
.p12
)通常是最简单的:这是通过Oracle/OpenJDK直接支持的
PKCS12
密钥库类型。(您可以将PKCS#12文件转换为JKS存储,但这不是必需的。)


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

这不是真的。首先,这取决于您是否使用APR。其次,默认的密钥库类型仍然是JKS。原则上,可以使用其中一个安全提供程序支持的任何密钥库类型,因此它取决于提供程序。在Oracle/OpenJDK(使用Sun提供程序)上,您可以使用JKS、PKCS#12、PKCS#11和NSS。