Tomcat 无法在密钥库中找到密钥条目

Joã*_*iel 7 ssl tomcat https

我正在 Tomcat 服务器中安装 SSL 证书,但无法在我的密钥库文件中找到密钥条目。

如果我不指定keyAlias="mykey"它会显示以下错误消息:

javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled.
Run Code Online (Sandbox Code Playgroud)

正如我在 Tomcat 文档http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html#Troubleshooting上看到的那样,它告诉我指定keyAlias.

但是,当我这样做时,我收到以下错误消息:

java.io.IOException: Alias name mykey does not identify a key entry
Run Code Online (Sandbox Code Playgroud)

如果 I keytool -list -keystore .keystore -v,我会得到三个关键条目,两个来自证书公司,最后一个:

Alias name: mykey
Creation date: Dec 17, 2011
Entry type: trustedCertEntry
Run Code Online (Sandbox Code Playgroud)

也就是key的入口在那里,但是Tomcat找不到。该keystoreFile修正设置为密钥存储文件。

它可以是什么?

小智 4

对于任何其他偶然发现这一点的人:关键(不是双关语)是在运行“keytool -genkey-alias”时使用与最初创建密钥库(及其私钥)相同的别名导入您的证书myalias ...'——这是 Tomcat 在导入新证书时将私钥与新证书关联起来的方式。

基本上,就像其他评论者所说,最终您自己的证书不应在“keytool -list”中显示为“trustedCertEntry”——它需要是“PrivateKeyEntry”,请参见下面的示例:

keytool -list -keystore sample.keystore

Your keystore contains 1 entry
example, Aug 28, 2018, PrivateKeyEntry,
Certificate fingerprint (SHA1): 12:E0:20:64:92:8A(...)
Run Code Online (Sandbox Code Playgroud)

您可以通过运行“keytool -list”并查找 PrivateKeyEntry 条目来找出原始别名。如果导入新的 CA 提供的证书时一切顺利(即,您使用相同的别名并且密钥匹配),新证书将自动吸收到 PrivateKeyEntry 中。这是您需要在 Tomcat 的 server.xml 文件中引用的别名。