# 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 详解(通俗易懂) (opens new window)