2016-07-27 113 views
0

如果我在服务器唯一身份验证中正确理解SSL/TLS,握手后,服务器将客户端的公钥和由CA签名的数字签名证书发送给客户端。如果客户端拥有此CA的公钥,它可以解密证书并与服务器建立信任关系。如果它不信任CA,则通信停止。在客户端需要向服务器进行身份验证的双向SSL中,在客户端收到公钥和数字签名证书后,客户端将通过公钥和数字签名证书发送服务器。服务器将检查它是否具有用于客户证书的公钥并且如果它具有与客户建立信任关系。我正在weblogic服务器上设置双向身份验证[在这种情况下,客户端向Web服务发出呼叫],第三方向我发送了数字签名证书和证书链。为什么我需要这些。这不是握手后服务器回复的内容吗?2路SSL/TLS配置

回答

0

服务器向客户端发送它的公钥和由CA签名的数字签名证书。

证书包含公钥。钥匙不会额外发送。

如果客户有这个CA的公钥,它可以解密证书

证书是不加密的,它是由CA签署。因此,如果客户端具有CA的证书(并且因此其公钥),则不进行解密,但客户端可以验证该签名。但通常,证书不是由浏览器信任的CA直接签署,但存在中间证书。在这种情况下,服务器不仅会发送服务器证书,还会发送构建trust chain所需的所有中间证书。

然后客户端将通过它的公钥和数字签名证书发送服务器。

此外,公钥是证书的一部分。

第三方向我发送了数字签名证书和证书链。为什么我需要这些。

第一个证书是客户端证书。建立trust chain需要链式证书,因为服务器不直接信任客户端证书的颁发者CA,因此需要中间证书。

+0

谢谢steffen,我看到我误解了证书的处理方式。如果服务器向客户端发送证书[服务器和中间件]作为握手的一部分,为什么我需要第三方发给我的证书?这些需要进入信托商店建立信任吗?如果是这样,为什么我需要将它们存储起来,如果它们是通过握手发送的?我感谢您的帮助。 –

+0

@BartStough:服务器将证书和与服务器证书相匹配的链发送给客户端。客户端将其证书和与客户端证书匹配的链发送到服务器。这些可以是不同的链。 –