SSL或TLS握手的概述

SSL或TLS握手的概述

SSL或TLS握手创建了用于客户端和服务端通讯的秘钥。算法

客户端和服务端SSL或TLS可以相互通讯的基本步骤:加密

  • 确认使用协议的版本
  • 选择加密算法
  • 经过交换和验证数字证书对彼此进行身份验证
  • 使用非对称加密技术生成共享密钥,避免了密钥分发问题。而后SSL或TLS使用共享密钥对消息进行对称加密解密,这比非对称加密更快

综上所述SSL握手的步骤以下:字符串

  1. SSL或TLS客户端先向服务端发送一个加密通讯请求,叫作ClientHello请求。该请求包含如下信息:
    • 客户端支持的SSL或者TLS版本
    • 客户端生成的随机数,用于生成后续通讯的随机字符串("对话密钥")
    • 客户端支持的加密算法
  2. SSL或TLS服务端收到客户端请求后,向客户端发出响应,叫作ServerHello。该响应包含如下信息:
    • 服务端从客户端提供的SSL或TLS列表中选择的版本
    • Sesstion ID 和 另外生成的随机数
    • 服务端的数字证书(若是服务端须要用于客户端身份验证的数字证书,则服务端发送一个客户端证书请求,其中包含受支持的证书类型列表和可接受的认证机构(CAs)的专有名称。)
    • 确认使用的加密算法
  3. 客户端收到服务端响应后,首先校验服务端发来的数字证书决定是否继续通讯。
  4. 证书校验经过,会像服务端发送如下信息:
    • 生成一个随机数,并对这个随机数用从服务端数字证书中取出的公钥加密(用与生成后续通讯的“随机密钥”)
  5. 若是服务端发送了一个客户端证书请求,客户端将会发送一个用客户端私钥加密的随机字符串和客户端的数字证书,或者没有数字证书的警告。在某些强制客户端证书的实现中,若是客户端没有数字证书责握手会失败
  6. 服务端接受并验证客户端证书
  7. 客户端向服务端发送一条完成的消息,该消息使用密钥加密,表示握手的客户端部分已经完成。
  8. 服务端向客户端发送一条完成的消息,该消息使用密钥加密,表示握手的服务端部分已经完成
  9. 在SSL或TLS会话期间,服务端和客户端如今能够交换使用共享密钥对称加密的消息
相关文章
相关标签/搜索