# https
《大前端进阶 安全》系列 HTTPS详解(通俗易懂) (opens new window)
# Why HTTPS
http 明文传输 不安全 所有经过的地方都可能发生劫持
# 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相等,表示证书可信,没有被篡改