HTTPS SSL 握手流程

在发送已加密的HTTP报文之前,客户端和服务器要进行一次SSL握手,在这握手过程中,他们要完成以下工作:

  • 交换协议版本号
  • 选择一个两端都了解的密码
  • 对两端的身份进行认证
  • 生成临时的会话秘钥,方便加密信道

HTTPS SSL 握手流程_第1张图片

  1.  DNS解析(通过访问的域名找出其IP地址,递归搜索)
  2. HTTP请求,当输入一个请求时,建立一个Socket连接发起TCP的3次握手
  3. 如果是HTTPS请求建立连接后,则看Q26
  4. 客户端向服务器发送请求命令(一般是GET或POST请求)
  5. 客户端发送请求头信息
  6. 服务器发送应答头信息
  7. 服务器向客户端发送数据
  8. 服务器关闭TCP连接(4次挥手)

HTTPS SSL 握手流程_第2张图片

 SSL握手的简化版

HTTPS SSL 握手流程_第3张图片

第一个随机数由client生成,第二个随机数由server生成。

第三个随机数由client生成,使用server的公钥加密,并发送给server。第三个随机数即图中的Premaster secret。这个过程中,Premaster secret只有client和server知道,不会泄露。

然后client和server根据三个随机数生成一个session key,即接下来数据传输过程中用到的对称秘钥。

总结来说就是一共生成三个随机数,根据三个随机数创建一个对称加密的秘钥。前两个随机数可以被抓包拿到,但是第三个随机数已经使用非对称加密算法加密过,所以最终生成的秘钥是保密的。
 

参考:http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html

HTTP/2幕后原理

你可能感兴趣的:(网络技术)