白话HTTPS

HTTPS

Posted by TBKK on January 10, 2020

HTTPS的流程

准备工作

服务器上保存着 一对公钥+秘钥(通过公钥加密后的数据,只有通过秘钥可以解开)

交互流程

  1. 客户端发起连接,向服务器申请公钥。
  2. 客户端拿到公钥判断是否安全,不安全就退出了。(就是让你点是否继续访问)
  3. 客户端生成一个key(随机的),因为服务有1个,但是客户端有好多,总要区别开来。
  4. 用之前的公钥把这个key加密,发送给服务端
  5. 服务端把加密后的key,用私钥解开,这样就获得了key的内容了。
  6. 这样服务器和客户端都拿到了这个key,这样数据交互就用对称加密的方式传出,并且别人也无法获得次key。
  7. 交互完成。

问题

  1. 如何防止中间人攻击 https握手过程的证书校验环节就是为了识别证书的有效性唯一性等等, 所以严格意义上来说https下不存在中间人攻击, 存在中间人攻击的前提条件是没有严格的对证书进行校验, 或者人为的信任伪造证书,

(通俗的讲就是,浏览器弹出来这是个不安全的网站,你是否要继续访问)