2017-03-21 121 views
1

我在写一个通过HTTPS与另一个服务通信的微服务。在java客户端实现中,从truststore中读取根证书,然后通过它来验证传入证书。使用Java客户端进行SSL证书验证

现在,我的问题是 - 默认情况下,只有第二级证书将使用根证书进行验证,否则所有链接的证书又会得到验证?

我使用okhttp;我的假设是所有的Java客户端都应该以同样的方式行事,请让我知道这里是否有任何主观性?谢谢。

回答

2

如果包括在信任的根证书,整个链条将被验证

握手期间SSL服务器向客户端从叶证书的证书链的根。根证书可以被包括在内,但通常它不是

默认Java客户端的信托经理将验证所提供的证书链看在信任,直到它找到证书或证书本身

+0

的发行让我们这种情况:证书链是root - > cert1 - > cert2 - > cert3。当握手开始时,服务器将发送cert1 - > cert2 - > cert3。那么,客户端只会使用root验证cert1,然后隐含地得出所有链都有效的结论,或者它是否也会验证cert2和cert3? –

+0

链发送并通过反向cert3 - > cert2 - > cert1 - > root进行验证。客户端将验证cert3,cert2和cert1,直到发现根目录为止 – pedrofb

+0

因此,签名cert3将使用cert2进行验证,这是来自服务器的任何方式。那么它将提供什么价值?另外,Java实现是否验证所有者域,日期和其他这样的细节?而且,所有的java http客户端都有类似的行为? –

相关问题