受信任的根CA应该是证书链的一部分吗?

时间:2016-01-22 11:07:37

标签: ssl ssl-certificate keystore jks

我在不同主机上的服务之间设置双向SSL通信。让我们说我有自己的CA称为A.通过集中式jks,我的所有服务都信任A.现在让我们说我有B签署的证书B.当服务发送证书时,他们应该发送整个链B - A,还是只发B?我相信两者都适用于大多数实现。

我试图在网上找到关于此的规范信息,但我没有提出任何建议。

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

根据tls - Validating an SSL certificate chain according to RFC 5280: Am I understanding this correctly? - Information Security Stack Exchange

  

服务器应该发送要使用的确切链;服务器   明确允许省略根CA,但这都是。

参考(RFC 5246 - TLS v1.2, sec. 7.4.2. - Server Certificate):

  

certificate_list

     

这是证书的序列(链)。发件人   证书必须在列表中排在第一位。以下每个证书   必须直接证明它前面的那个。因为证书   验证要求根密钥独立分发,   自签名证书,指定根证书   在假设的情况下,可以从链中省略权限   远程端必须已拥有它才能验证它   无论如何。

答案 1 :(得分:2)

受信任的根CA背后的想法是它是受信任的。您是否希望浏览器信任服务器发送的任何内容,因为它包含根CA?没有!

因此,根CA必须已经在客户端,并且必须在那里受信任。它不应该被服务器包含在证书链中,但如果你这样做,浏览器就会忽略它。