# 18.HTTPS原理及最佳实践
- HTTPS = HTTP + TLS(SSL)
- TLS 是 SSL 经过组织协议之后的版本。TLS 目前包括 TLS1.2(2008 年更新)TLS1.3(2018 年更新)
- TLS1.2 需要 2 个 rtt,TLS1.3 需要 0 个 rtt,极大的加快了速度。
# HTTP 为什么需要握手?
- 身份认证-防冒充
- 数据加密-防窃听
- 数据防篡改-防篡改
# 身份认证-证书
# 作用
- 校验签名
- 传递公钥
# 非对称加密
公钥加密,私钥解密。 客户端请求证书 =》 服务器 服务器发送证书 =》 携带公钥 A、证书 =》 客户端 客户端 =》 通过公钥 A 加密一个数据 a,校验证书 =》 客户端 服务器 =》 通过私钥解密数据 a
# 流量劫持和监控
HTTPS 是解决链路劫持的核武器!
# DNS 劫持(域名劫持)
# 如何攻击
- 本机 DNS 劫持 攻击者通过某些手段使用户的计算机感染上木马病毒,或者恶意软件之后,恶意修改本地 DNS 配置,比如修改本地 hosts 文件,缓存等
- 路由 DNS 劫持 很多用户默认路由器的默认密码,攻击者可以侵入到路由管理员账号中,修改路由器的默认配置
- 攻击 DNS 服务器 直接攻击 DNS 服务器,例如对 DNS 服务器进行 DDOS 攻击,可以是 DNS 服务器宕机,出现异常请求,还可以利用某些手段感染 dns 服务器的缓存,使给用户返回来的是恶意的 ip 地址
# 如何防御
- 准备两个域名,随时切换
- 预埋 ip 地址,拿不到正确回包的时候直接发起 ip 请求
- DNS over HTTPS
- 在 TLS 协议之上传输 DNS 内容。
- DNS over HTTP
- 用 HTTP 协议来传输 DNS。
- DNS over HTTPS
- 用 HTTPS 协议来传输 DNS
一般使用 http-dns 绕过运营商解析域名,达到防止 DNS 劫持的目的.
- 用 HTTPS 协议来传输 DNS
# 不能解决的问题
- 客户端木马、问题
- 只能处理在传输层的问题
- 中间人攻击也没办法
# HTTPS 性能优化
# HTTPS 存在的问题
为什么现在还有 54%不支持 HTTPS?
# 慢
- 移动端慢 500ms 以上
# TCP 协议优化
- fast open
# 应用层协议优化
HSTS 减少 302 跳转
采用 HTTP2.0
- HTTP1.x 是串行链路。
- HTTP2.0 支持【多路复用】、【头部压缩】、【server push】
# 密钥计算加速
- RSA 算法对整体性能影响 75%
- 优化方案(减少完全握手)
- 分布式 session cache
- 全局 session ticket
- 自定义 session ticket
- RSA 异步代理计算
#
# 贵
- 服务器成本:HTTPS 性能不到 HTTP 1/10
- 证书:价格不一、容易过期、申请复杂