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

时间:2012-04-09 09:05:51

标签: java tomcat ssl keytool

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

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

openssl genrsa -des3 -out localhost 2048

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

  

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

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

答案 1 :(得分:-2)

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