为了账号安全,请及时绑定邮箱和手机立即绑定

导入证书作为PrivateKeyEntry

/ 猿问

导入证书作为PrivateKeyEntry

德玛西亚99 2019-12-04 12:57:22

我正在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?


查看完整描述

3 回答

?
qq_笑_17

摆脱-trustcacerts选择。这不是CA证书。这是您的证书。并使用私钥已具有的相同别名。


查看完整回答
反对 回复 2019-12-04
?
当年话下

您尝试添加证书,并期望它是私钥-两种不同事物之间的混淆。


通常,在创建密钥库(.jks)时,它会在内部包含私钥。如果其为空(已删除),则应从密钥和证书生成捆绑包(.p12文件)。


为了创建新的自由密钥和证书,您可以使用openSSl 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


查看完整回答
反对 回复 2019-12-04
?
慕码人8056858

这些CA准则有点误导。@EJP正确地表示您不应该使用-trustcacerts您的证书。


另外,此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证书导入您的密钥库中是没有意义的。(在信任库中很有用,但是您使用的CA可能已经在默认信任库中。)


实际上,在密钥库中具有用于证书的CA证书很有用,以便在需要中间证书时提供完整的证书链。但是,即使密钥管理器(除非是自定义实现)也不会为您建立链,即使它在您的最终实体证书(在PrivateKeyEntry中)旁边找到合适的CA证书也是如此。


您需要针对私钥所在的条目将这些证书作为链一起导入。为此,将证书合并到一个文本文件(PEM编码)中,首先是服务器证书,然后是用于颁发证书的证书,依此类推。然后,使用该私钥别名将该文件导入您的密钥库。(这与该问题完全相同,但是具有服务器证书。)


(我不确定您的CA是否已将您的证书文件作为一个链条提供,但是通常,您至少在一个文件中获得证书,而在另一个文件中获得中级CA证书。您链接到的文档似乎具有误导性,因为它们两者之间的间隔不超过一个--BEGIN/END CERT--,但不知何故,他们的示例屏幕截图针对该单个别名的证书长度为4。)


正如@jww在对您的问题的评论中所指出的那样,您不需要此链中的“根” CA证书(自签名证书),因为您的客户已经信任它,或者它没有理由发送时请信任它。在您的链中拥有它并没有错,但这是没有意义的,并且可能会增加一些网络开销。


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 152 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信