3 回答
TA贡献1803条经验 获得超6个赞
这些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证书(自签名证书),因为您的客户已经信任它,或者它没有理由发送时请信任它。在您的链中拥有它并没有错,但这是没有意义的,并且可能会增加一些网络开销。
添加回答
举报