# https
# Why HTTPS
http 经过 WiFi,路由器,交换机都是明文传输 不安全 所有经过的地方都可能发生劫持
# HTTPS 实现原理
SSL 安全套接层
TLS 传输层安全协议
# HTTPS 加解密流程
- 发起请求 端口 443
- 服务端收到请求,返回配置好的包含公钥 Pub 的证书给客户端
- 客户端收到证书,校验合法性
- 客户端生成一个用于对称加密的随机 Key,并用证书内的公钥 Pub 进行加密,发送给服务端
- key 加密
- 服务端收到随机 Key 的密文,使用与公钥 Pub 配对的私钥 Private 进行解密,得到客户端真正想发送的随机 Key
- 解密 得到 key
- 服务端用 key 进行加密内容 将密文返回客户端
- 客户端使用随机 Key对称解密密文,得到 HTTP 数据明文
- 后续 HTTPS 请求使用之前交换好的随机 Key 进行对称加解密
# 对称加密与非对称加密
非对称加解密耗时要远大于对称加解密
非对称加密 加密解密 一个 对称加密的 key
# CA 颁发机构
客户端无法确认收到的公钥是不是真的是服务端发来的
# 数字签名
防止公钥被篡改
- CA 机构拥有自己的一对公钥和私钥
- CA 机构在颁发证书时对证书明文信息进行哈希
- 将哈希值用私钥进行加签,得到数字签名
验证
- 客户端得到证书,分解成明文部分 Text 和数字签名 Sig1
- 用 CA 机构的公钥进行解签,得到 Sig2(由于 CA 机构是一种公信身份,因此在系统或浏览器中会内置 CA 机构的证书和公钥信息)
- 用证书里声明的哈希算法对明文 Text 部分进行哈希得到 T
- 当自己计算得到的哈希值 H 与解签后的 Sig2 相等,表示证书可信,没有被篡改