1

我一直在寻找有关 SSL 证书和加密协议的信息。我得到了很好的答案,尤其是在这个网站上。

只有一件事我不明白。如果我做对了,身份的验证(我的意思是服务器身份的验证,而不是证书身份的验证)是使用非对称加密进行的。

这意味着步骤将是(如果我错了,请阻止我):

  • 客户端使用经过验证的公钥加密随机挑战字符串并将其发送到服务器。
  • 服务器使用其私钥对其进行解密并将其发送回客户端。
  • 客户端检查来自服务器的响应是否与它刚刚发送的随机挑战字符串匹配。

是什么阻止了假服务器这样做,例如 www.example.com 的真实证书但没有私钥?

  • 客户端使用经过验证的公钥加密随机挑战字符串并将其发送到服务器。
  • 假服务器将加密的随机挑战字符串发送到 www.example.com,作为想要检查其身份的客户端。
  • www.example.com 将解密的随机挑战字符串发送回假服务器。
  • 假服务器将其发送回客户端。
  • 身份确认?
4

2 回答 2

2

客户端使用经过验证的公钥加密随机挑战字符串并将其发送到服务器。

客户端使用服务器的公钥加密某些东西的密钥交换模式是 RSA 密钥交换模式。在 TLS 规范的 F.1.1.2 节中有完整的描述。

本质上,客户端生成预主密钥,使用服务器的公钥(在服务器发送的服务器证书中找到)对其进行加密,并将其发送到服务器(在客户端密钥交换消息中)。而已。只有具有匹配私钥的服务器才能解密它。服务器不会将任何解密版本发送回客户端,因此无法要求第 3 方执行您似乎想到的任何操作。

于 2013-08-03T17:56:48.723 回答
-2

这只是一个稻草人的论点。您列出的步骤完全是虚构的。实际步骤如下:

  1. 服务器将其证书作为 TLS 握手的一部分发送。
  2. 服务器通过其证书和其他握手消息发送由其私钥签名的数字签名。
  3. 客户端使用证书中的公钥来验证数字签名。

只有拥有与证书中的公钥对应的私钥的服务器才能成功。

我建议您阅读一些内容,而不是阅读 Internet 上的随机帖子:尝试规范性参考:RFC 2246

于 2013-08-02T22:10:23.977 回答