SSL握手中的客户端证书身份验证

时间:2015-12-30 15:31:44

标签: authentication ssl ssl-certificate

我正在通过SSL协议并尝试了解SSL握手中涉及的步骤。

现在用于向服务器验证客户端“客户端证书”     身份验证“已完成。我想知道”客户端实际发生了什么     证书认证“详细。

1 个答案:

答案 0 :(得分:2)

SSL握手步骤:

  1. 客户端向服务器发送客户端的SSL版本号,密码设置,随机生成的数据以及服务器使用SSL与客户端通信所需的其他信息。
  2. 服务器向客户端发送服务器的SSL版本号,密码设置,随机生成的数据以及客户端通过SSL与服务器通信所需的其他信息。服务器还发送自己的数字证书,如果客户端请求需要客户端身份验证的服务器资源,则请求客户端的数字证书。
  3. 客户端使用服务器发送的信息来验证服务器。如果无法对服务器进行身份验证,则会向用户发出无法建立加密和身份验证连接的问题的警告。如果可以成功验证服务器,则客户端继续。
  4. 使用目前为止在握手中生成的所有数据,客户端为会话创建预主密钥,使用服务器的公钥(从服务器的数字证书获取)对其进行加密,并将加密的预主密钥发送到服务器。 / LI>
  5. 如果服务器已请求客户端身份验证(握手中的可选步骤),则客户端还会签署另一个数据,该数据对于此握手是唯一的,并且客户端和服务器都知道。在这种情况下,客户端将签名数据和客户端自己的数字证书连同加密的预主密钥一起发送到服务器。
  6. 如果服务器已请求客户端身份验证,则服务器会尝试对客户端进行身份验证。如果无法对客户端进行身份验证,则会话终止。如果客户端可以成功通过身份验证,则服务器使用其私钥解密预主密钥,然后执行客户端也执行的一系列步骤,从相同的预主密钥开始生成主密钥。
  7. 客户端和服务器都使用主密钥生成会话密钥,这些密钥是用于加密和解密SSL会话期间交换的信息的对称密钥,并验证其完整性。
  8. 客户端通知服务器将使用会话密钥加密来自客户端的未来消息。然后它发送一条单独的加密消息,指示握手的客户端部分已完成。
  9. 服务器向客户端发送消息,通知它将使用会话密钥加密来自服务器的未来消息。然后它发送一条单独的加密消息,指示握手的服务器部分已完成。
  10. SSL握手现已完成,SSL会话已开始。客户端和服务器使用会话密钥加密和解密彼此发送的数据并验证其完整性。
  11. 自: http://www.pierobon.org/ssl/ch2/diagram.htm