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

在Tomcat 7中启用s​​sl模式时,我在tomcat日志中收到以下错误

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

openssl genrsa -des3 -out localhost 2048 

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

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

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

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

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

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

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

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