我正在 Tomcat 服务器中安装 SSL 证书,但是无法在我的密钥库文件中找到密钥条目。
如果我不指定keyAlias="mykey"
它会显示以下错误消息:
javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled.
正如我在 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
如果我keytool -list -keystore .keystore -v
,我会得到三个关键条目,两个来自认证公司,最后一个:
Alias name: mykey
Creation date: Dec 17, 2011
Entry type: trustedCertEntry
也就是说,密钥条目在那里,但 Tomcat 找不到它。keystoreFile
已更正设置为密钥库文件。
这会是什么呢?
答案1
对于其他偶然发现这一点的人:关键(不是故意双关语)是使用相同的别名与您运行“keytool -genkey-alias”时最初创建密钥库(及其私钥)时使用的密钥库相同我的别名...'——这是 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(...)
您可以通过运行“keytool -list”并查找 PrivateKeyEntry 条目来找出原始别名。如果导入新的 CA 提供的证书时一切顺利(即,您使用相同的别名并且密钥匹配),新证书将自动吸收到 PrivateKeyEntry 中。这是您需要在 Tomcat 的 server.xml 文件中引用的别名。