HTTPS 通讯
加密算法:
- 对称加密
- 非对称加密
HTTPS 通讯流程:
- 服务器先向证书颁发机构发送自己的公钥
- 证书颁发机构会返回一个证书给服务器(证书包含以下信息:证书颁发机构,服务端网址,证书签名(经过机构密钥加密),服务端公钥(经过机构密钥加密))
- 当客户端向服务端发送请求,服务端返回证书给客户端
- 客户端收到证书,客户端验证证书真伪(目前各大浏览器和操作系统已经维护了所有证书机构和对应的公钥,客户端只需要知道是哪个证书机构颁发的证书,获取本地对应的公钥对证书签名进行解密,并且按照同样的签名规则生成出一个证书签名,对比这两个签名是否一致,若一致则验证证书有效)验证签名有效后,客户端利用机构的公钥解密出证书中服务端的公钥
- 客户端利用服务端的公钥将自己生成出的通讯密钥加密发送给服务端(服务端公钥 + 通讯密钥 To 服务端)
- 服务端再利用自己的私钥将通讯密钥解密出来 这样客户端和服务端就都获得了通讯密钥,此后客户端与服务端通讯都经过通讯密钥加密。
HTTPS 协议概述
HTTS = HTTP + TLS(前身是 SSL 协议,TSL 层搭建在HTTP层和TCP层中间)
优势
- 内容加密(对称内容加密,非对称密钥交换)
- 身份验证(数字证书)
- 数据完整性
使用成本
- 证书费用以及更新维护
- HTTPS 降低用户访问速度(利用优化完全可以避免)
- 消耗 CPU 资源,需要增加大量机器(主要消耗在加密算法上)
对性能的影响
- 协议交互所增加的网络 RTT(RTT是指发送端发出消息到接收到消息的时间)
302 跳转:目前用户访问一般不会输入 https 去访问,所以第一次访问的大多数是 http ,服务器返回 302 将客户端访问转到 https TSL完全握手阶段一:双端加密套件的协商和证书验证是否过期 TSL完全握手阶段二:双端密钥解析
- 加解密计算耗时