错误:在 Tomcat 中实施 SSL 期间,别名 [null] 无法识别密钥条目

Chi*_*tel 5 java ssl tomcat pkcs#11 x509

我第一次尝试在 tomcat 8 中实现 SSL。

我有 .pem 文件形式的第三方签名 X.509 证书。

但是配置完成后,当我尝试启动 tomcat 时,出现以下错误:

2017 年 11 月 22 日 18:48:01.735 信息 [主要] org.apache.coyote.AbstractProtocol.init 初始化 ProtocolHandler ["https-jsse-nio-8443"] 2017 年 11 月 22 日 18:48:01.897 严重 [主要] org.apache.coyote.AbstractProtocol.init 无法初始化与 ProtocolHandler ["https-jsse-nio-8443"] java.lang.IllegalArgumentException 关联的端点:java.io.IOException:别名 [null] 不标识密钥条目 于...

以下是我遵循的步骤:

  1. 将certificate.pem 重命名为certificate.p7b。
  2. 应用以下命令将证书导入密钥库:

D:\keytest2>keytool -import -alias tomcat -trustcacerts -文件证书.p7b -keystore keystore.kdb

输入密钥库密码:test
重新输入新密码:test

...
...
证书已添加到密钥库

  1. 检查导入的证书:

D:\keytest2>keytool -list -v -keystore keystore.kd

这给了我以下输出:

密钥库类型:JKS 密钥库提供商:SUN

您的密钥库包含 1 个条目

别名:tomcat 创建日期:2017 年 11 月 22 日 条目类型:trustedCertEntry ……

汤姆猫配置:

<Connector port="8443" protocol="HTTP/1.1"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true" 
               keystoreFile="file:///D:/keytest2/keystore.kdb" keystorePass="test"
           clientAuth="false" sslProtocol="TLS">
Run Code Online (Sandbox Code Playgroud)

请指导我哪里做错了。

Chi*_*tel 1

该问题是由于 tomcat 配置中缺少参数“keyAlias”造成的。

然而,放置别名并没有解决我的问题。它开始用别名而不是 null 抛出相同的错误:)。

根据 @dev_thompson_085 的评论,我发现我丢失了此过程的密钥文件。因此,我按照以下网址尝试使用自签名 X.509 证书:https: //www.ibm.com/support/knowledgecenter/en/SSWHYP_4.0.0/com.ibm.apimgmt.cmc.doc/task_apionprem_gernerate_self_signed_openSSL.html

它对这两个文件都运行得很好。