Skip to content

https

Why HTTPS

http 经过 WiFi,路由器,交换机都是明文传输 不安全 所有经过的地方都可能发生劫持

HTTPS 实现原理

SSL 安全套接层

TLS 传输层安全协议

HTTPS 加解密流程

  1. 发起请求 端口 443
  2. 服务端收到请求,返回配置好的包含公钥 Pub 的证书给客户端
  3. 客户端收到证书,校验合法性
  4. 客户端生成一个用于对称加密的随机 Key,并用证书内的公钥 Pub 进行加密,发送给服务端
    • key 加密
  5. 服务端收到随机 Key 的密文,使用与公钥 Pub 配对的私钥 Private 进行解密,得到客户端真正想发送的随机 Key
    • 解密 得到 key
  6. 服务端用 key 进行加密内容 将密文返回客户端
  7. 客户端使用随机 Key对称解密密文,得到 HTTP 数据明文
  8. 后续 HTTPS 请求使用之前交换好的随机 Key 进行对称加解密

对称加密与非对称加密

非对称加解密耗时要远大于对称加解密

非对称加密 加密解密 一个 对称加密的 key

CA 颁发机构

客户端无法确认收到的公钥是不是真的是服务端发来的

数字签名

防止公钥被篡改

  • CA 机构拥有自己的一对公钥和私钥
  • CA 机构在颁发证书时对证书明文信息进行哈希
  • 将哈希值用私钥进行加签,得到数字签名

验证

  • 客户端得到证书,分解成明文部分 Text 和数字签名 Sig1
  • 用 CA 机构的公钥进行解签,得到 Sig2(由于 CA 机构是一种公信身份,因此在系统或浏览器中会内置 CA 机构的证书和公钥信息)
  • 用证书里声明的哈希算法对明文 Text 部分进行哈希得到 T
  • 当自己计算得到的哈希值 H 与解签后的 Sig2 相等,表示证书可信,没有被篡改

参考文章:《大前端进阶 安全》系列 HTTPS 详解(通俗易懂)