关于身份验证:SSL证书和身份验证

SSL Certificate and identity verification

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

我只有一件事。如果我理解正确,则使用非对称密码学进行身份验证(即服务器身份验证,而不是证书身份验证)。

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

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

是什么阻止伪造的服务器使用真实的证书(例如www.example.com)却没有私钥来做到这一点呢?

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

Client uses verified public key to encrypt a random challenge string
and send it to server.

客户端使用服务器的公共密钥加密某些内容的密钥交换模式是RSA密钥交换模式。 TLS规范的F.1.1.2节对此有完整描述。

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


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

  • 服务器将其证书作为TLS握手的一部分发送。
  • 服务器通过其证书发送数字签名,并通过其私钥签名其他握手消息。
  • 客户端使用证书中的公钥来验证数字签名。
  • 只有具有与证书中的公钥相对应的私钥的服务器才能成功。

    我建议您阅读一些内容,而不是在Internet上随意发帖:请尝试使用标准参考:RFC 2246。