HTTP + TLS
TLS 的前身是 SSL
非对称加密的核心: 两个密钥(公私)
https 需要第三方CA(证书授权中心)申请SSL证书以确定其真实性
证书种包含了特定的公钥和私钥
密钥交换
- 自己将私钥上锁后发给对方
- 对方也上锁 在还回来让自解锁
- 自己再把带有对方锁的私钥 发过去
这样对方就可以获得私钥了
但是中间人是可以调包的
私钥加密公钥解密 对内容进行哈希运算 用于校验
没有私钥就不能仿照加密,也就不能篡改校验信息,从而保障了对“调包”的校验能力
但如果公钥也被中间人替换了呢?
公钥是可以公开的,中间人想截断所有途径是相对困难的。
TLS1.2
RSA算法 DH算法
过程
- 客户端打招呼 确定 TLS版本 支持的加密套件(加密算法组合)
- 服务端打招呼 确定 TLS版本 选择加密套件
- 服务器出示证书
- 服务器打招呼结束
预主密钥 是 第三个随机数 通过 公钥加密 传输给服务端
RSA 公钥加密、私钥解密
DH算法 协商参数混入
双方私钥混合
核心:生成共享密钥
需要充分随机,否则密钥被爆破,所有历史信息都被窃取
TLS1.3
移除了静态RSA和静态DH
仅用少数几种更复杂的加密算法,减少协商成本,防止向下兼容
启用https
参考文章
https网站 应采用 https 方式加载资源
去掉协议头采用 协议相对地址
弊端 时间开销 重定向
http重定向到https
Strict-Transport-Security