2016-01-22 69 views
1

我正在设置不同主机上的服务之间的双向SSL通信。假设我有自己的CA.我的所有服务都通过集中的jks来信任我。现在让我们说我有由A签名的证书B.当服务发送证书时,他们应该发送整个链B - A还是B?我相信这两种方法都适用于大多数实现。受信任的根CA应该是证书链的一部分吗?

我试图找到关于这个在线的规范信息,但我什么都没有提出。

感谢您的帮助

+1

什么软件用于验证证书?验证实体除证书之外还有哪些信息? (a [mcve],也许) –

+0

问题更多地是关于特定软件的标准。验证实体提供证书并知道它信任CA. – mck

+0

如果是关于什么标准说,然后相关:http://security.stackexchange.com/questions/81972/what-part-of-tls-specifies-how-to-verify-a-certificate-chain –

回答

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

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

2

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

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

相关问题