SSL证书和身份验证

时间:2013-08-02 16:37:32

标签: authentication ssl https certificate

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

我只有一件事没有得到。如果我做对了,那么使用非对称加密技术验证身份(我的意思是验证服务器身份,而不是证书身份)。

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

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

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

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

2 个答案:

答案 0 :(得分:2)

  

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

客户端使用服务器的公钥加密内容的密钥交换模式是RSA密钥交换模式。在section F.1.1.2 of the TLS specification中有完整的描述。

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

答案 1 :(得分:-2)

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

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

    我建议你做一些阅读,而不是在互联网上随意发帖:尝试规范性参考:RFC 2246