网络复习:HTTPS/TLS/SSL

SSL/TLS

  1. 基本流程
  • 客户端想服务端索要并验证公钥。
  • 双方协商生成对话密钥。
  • 双方采用对话密钥进行加密通信。
  1. 详细解释
    上面流程的第一二两步叫做握手。如下图所示:

    一共有四次通信,在握手阶段都是明文。
  • 客户端发出请求(ClientHello)
    客户端主要向服务器提供以下信息
    • 支持的协议版本,比如TLS 1.0版。
    • 一个客户端生成的随机数,稍后用于生成”对话密钥”。
    • 支持的加密方法,比如RSA公钥加密。
    • 支持的压缩方法。
  • 服务器回应(SeverHello)
    服务器收到客户端请求后,向客户端发出回应,这叫做SeverHello。服务器的回应包含以下内容。
    • 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
    • 一个服务器生成的随机数,稍后用于生成”对话密钥”。
    • 确认使用的加密方法,比如RSA公钥加密。
    • 服务器证书。
  • 客户端回应
    客户端收到回应之后,首先验证证书,若没有问题,就从证书中取出公钥,然后发送下面三个信息:
    • 一个随机数。该随机数用服务器公钥加密,防止被窃听。
    • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
    • 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。
  • 服务器的最后回应
    服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的”会话密钥”。然后,向客户端最后发送下面信息。
    • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
    • 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。

关于TLS这篇文章讲的很详细

HTTPS

https的流程大概是:

  1. 与目标机器443端口tcp连接。
  2. 利用TLS协议获取服务器证书,与服务器通信商议对称密钥,此后报文通过对称加密保护。
  3. 使用普通http传输报文。