前言
HTTPS的实现原理,其实就是S的实现原理,在HTTP协议的基础上,安全到底是怎么实现的,我们接下来就要围绕这个问题研究一下。
HTTPS与HTTP的区别
先来看这张图,无论是国际标准OSI七层协议还是其他标准,SSL/TLS都处于会话层部分,为了管理会话,实现可靠传输,保证数据交互的可靠性。
HTTPS | HTTP |
---|---|
安全性高,加密传输(SSL/TSL,混合加密 对称+非对称)、身份认证、保证完整性、不可否认/抵赖 | 安全性低, 明文传输、身份冒充、传输过程可能被篡改、无法保证事务真实性 |
端口:443 | 端口:80 |
灵活性:低 | 灵活性:高 |
访问速度:慢 | 访问速度:快 |
经济适用度:收费(CA机构证书) | 经济适用度:免费 |
HTTPS工作流程
TCP工作流程(3次握手)
HTTPS工作流程(TLS1.3)
- Client发起请求(端口443)
- Server返回公钥证书(Server中有公钥和私钥,只发送公钥给Client)
- Client验证证书
- Client生成对称密钥,用公钥加密后发给Server
- Server使用私钥解密,得到对称密钥
- C/S双方使用对称密钥:
- 加密明文并发送
- 解密密文得到明文
总结:C/S两端一开始会使用非对称加密,最后都会用对称密钥进行数据传输
HTTPS的工作流程
如图,TCP三次握手后,开始执行TLS的4次握手过程:
- 客户端发送请求,建立TLS连接
- 服务端制定密码套件规则,将公钥传回到客户端
- 客户端根据服务端给定参数(算法ECDHE)生成对称密钥,加密后返回给服务端
- 服务端告诉客户端交互完成(finished)
更详细的握手过程
TLS1.3版本
TLS1.3 比TLS1.2进行了性能优化处理 3次握手
- Clien携带公钥发起请求(端口443)
- server计算出对称密钥,用client公钥加密服务端参数并返回
- client验证证书、私钥解密服服务端参数
- client生成对称密钥
- C/S双方使用对称密钥
HTTPS实现原理:机密性
HTTPS实现原理:完整性
HTTPS实现原理:身份认证和不可否认
HTTPS应用
HTTPS性能优化
HTTPS相比于HTTP更加的安全,当然效率也会略低一些,我们既然选择了安全,就要接受性能方面的损失,所以我们在使用HTTPS的同时,也要不断进行性能优化处理。