CA颁发了SSL证书有用性
我一直在尝试在客户端和服务器之间设置SSL。 正如我正在研究这一点,我不能理解CA颁发的SSL证书的有用性,除了它具有服务器的公钥之外。
由于与CLient之间的证书交换是未加密的,因此如果有人可以在客户端和服务器之间获得证书,他们可以伪装成服务器,然后用服务器证书响应ClientHello消息(无论证书是否由CA签名)。
由于Cert具有服务器的公钥,所以在交换主密钥时,客户端可以使用它来加密秘密,并且“中间人”将不能解密,因为他没有服务器的“私钥”。 我认为这是最大的好处。我的理解是否正确?
如果我们启用客户端验证,CLient需要再次发送其证书,我在这里看不到什么好处。 服务器是否使用客户端证书验证之外的客户端公钥?
“中间人”将无法解密,因为他没有服务器的“私钥”
是的,除非MITM可以访问私钥,否则他将无法继续。 事实上,如果您查看TLS握手图,则ClientKeyExchange步骤是客户端使用服务器公钥对预主密钥进行加密,并且只有拥有对私钥的访问权的人才能解密该消息。 在没有私钥的情况下,TLS握手将失败。
如果客户端需要证书验证,则服务器会发送证书请求消息,要求客户端提供证书。 请注意,这是可选的。 在这种情况下,客户端提交自己的证书并执行CertificateVerify步骤,该步骤涉及客户端使用其私钥对所有前面的握手消息计算数字签名,然后服务器使用客户端证书中存在的公钥来验证客户端可以访问非对称密钥的公共和私有部分。
链接地址: http://www.djcxy.com/p/21757.html