CA 颁发的 SSL 证书的用处

CA issued SSL Certificate Usefulness

我一直在尝试在客户端和服务器之间设置 SSL。当我调查这个时,我无法理解 CA 颁发的 SSL 证书的用处,除了它具有服务器的 Public 密钥。

由于与客户端的证书交换是未加密的,如果有人可以介于客户端和服务器之间,他们可以伪装成服务器,然后用服务器证书响应 ClientHello 消息(无论证书是否是是否由 CA 签名。)。

由于Cert有Server的Public Key,在交换Master Key Secret的过程中,Client可以用它来加密Secret,"man in the middle"将无法解密,因为他没有服务器的"private key"。我认为这是最大的好处..我的理解是否正确?

如果我们启用客户端验证,客户端需要发送其证书,同样,我看不出有什么好处。服务器是否在客户端证书验证之外使用客户端的 Public 密钥?

the "man in the middle" will be unable to decrypt, as he doesn't have the "private key" of the Server

是的,除非 MITM 可以访问私钥,否则他将无法继续。事实上,如果你看一下 TLS 握手图,ClientKeyExchange 步骤是客户端使用服务器 public 密钥加密预主密钥的地方,只有拥有访问私钥可以解密该消息。在没有私钥的情况下,TLS握手会失败。

如果客户端需要证书验证,服务器会发送CertificateRequest消息要求客户端出示证书。请注意,这是可选的。在这种情况下,客户端提供自己的证书并执行 CertificateVerify 步骤,该步骤涉及客户端使用其私钥计算所有先前握手消息的数字签名,然后服务器使用 public 密钥存在于客户端证书中,以验证客户端是否可以访问非对称密钥的 public 和私有部分。