我正在Tomcat服务器上安装SSL,并且遵循颁发者https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&actp=CROSSLINK&id=SO16181的这些说明并且声明:
Verify the following information:
The SSL certificate is imported into the alias with the "Entry Type" of
PrivateKeyEntry or KeyEntry. If not, please import the certificate into
the Private Key alias.
当我导入证书(tomcat)时,我正在使用:
keytool -import -trustcacerts -alias your_alias_name -keystore your_keystore_filename
-file your_certificate_filename
但是当我这样做时,它会导入为trustCertEntry
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 3 entries
primaryca, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1): <snip>
tomcat, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1): <snip>
secondaryca, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1): <snip>
如何将别名tomcat导入为PrivateKeyEntry?
答案 0 :(得分:7)
摆脱-trustcacerts
选项。它不是CA证书。它是您的证书。并使用私钥已经拥有的相同别名。
答案 1 :(得分:4)
这些CA指南有点误导。 @EJP正确地说你不应该使用-trustcacerts
作为你的证书。
此外,此CA文档建议在单独的操作中导入主CA证书和中间CA证书,这样可以得到如下结果:
primaryca, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1): <snip>
secondaryca, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1): <snip>
tomcat, Jul 26, 2014, PrivateKeyEntry,
Certificate fingerprint (SHA1): <snip>
不幸的是,像这样导入密钥库中的CA证书毫无意义。 (它在truststore中很有用,但您使用的CA可能已经在默认信任库中。)
确实在密钥库中拥有证书的CA证书非常有用,以便在需要中间证书时提供完整的证书链。但是,密钥管理器(除非可能是自定义实现)不会为您构建链,即使它在您的最终实体证书旁边找到合适的CA证书(在PrivateKeyEntry中)。
您需要将这些证书一起作为链导入到您的私钥所在的条目中。为此,请将证书连接在一个文本文件(PEM编码)中,首先是服务器证书,然后是用于颁发证书的证书,依此类推。然后,使用该私钥别名将该文件导入密钥库。 (这与this question中的问题完全相同,但使用服务器证书。)
(我不确定您的CA是否已将您的证书文件作为链条提供给您,但通常情况下,您只能在一个文件中获得您的证书,而在另一个文件中至少获得中间CA证书。您链接的文档似乎有误导性,因为他们没有提到--BEGIN/END CERT--
之间的多个块,但他们的示例屏幕截图的证书长度为4,而该单个别名。)
正如@jww在你的问题评论中指出的那样,你不需要&#34; root&#34;此链中的CA证书(自签名证书),因为您的客户端已经信任它,或者在您发送它时没有理由信任它。将它放在你的链中并没有错,但它没有意义,并且可能会增加一些网络开销。
答案 2 :(得分:4)
您尝试添加证书并期望它是私钥 - 它在两个不同的东西之间混淆。
通常,当您创建密钥库(.jks)时,它包含私钥。 如果它是空的(已删除),您应该从密钥和证书生成包(.p12文件)。
为了创建新的免费密钥和证书,您可以使用openSCl https://zerossl.com的此实现。
然后,您已经获得了一个密钥和证书,您应该从中生成(.p12)捆绑文件:(在Linux机器上)
openssl pkcs12 -export -in [filename-certificate] -inkey [filename-key] -name [host] -out [filename-new-PKCS-12.p12]
现在,只需执行以下命令,即可将捆绑文件(.p12文件)添加到密钥库(.jks):
keytool -importkeystore -deststorepass [password] -destkeystore [filename-new-keystore.jks] -srckeystore [filename-new-PKCS-12.p12] -srcstoretype PKCS12