文章目录
HTTP
HTTP(HyperText Transfer Protocol)超文本传输协议
http的作用
http是浏览器和网站服务器之间交流的规则
http定义了:
- 怎么请求数据
- 怎么返回数据
- 请求、响应的格式(比如GET、PUT等)
http的特点
- 明文传输
- 速度快,但完全不安全
- 默认端口:80
http的缺点
- 数据别人能偷看
- 内容能篡改
- 无法确认网站是不是真的(因为数据可能在传输过程中被掉包了,比如:把真网页换成假网页、把下载文件换成病毒)
SSL和TLS
- SSL:Secure Sockets Layer 安全套接层
- TLS:Transport Layer Security 传输层安全协议
两者关系:
- SSL是老版本
- TLS是SSL的升级版、更安全
- 现在常说的SSL证书其实是TLS证书
作用
是一个独立的加密层:
- 加密: 数据变成乱码,别人拦截了也看不懂
- 认证: 证明这个网站是真的
- 防篡改: 数据中途不能被改
特点
- 不关心传输的是什么内容
- 只负责把传输通道加密
工作流程
1.客户端发起握手
客户端向服务器发送:
- 支持的 TLS版本
- 支持的 加密套件(加密算法列表)
- 随机数A(客户端随机数)
目的:告诉服务器"我能用什么加密方式"
2.服务器响应
服务器回复:
- 选定的 TLS版本
- 选定的 加密套件
- 随机数B(服务器随机数)
- SSL证书 (含公钥、域名、CA签名(CA签名即权威机构给网站的防伪证明))
目的:告诉客户端"我们用这种方式加密,这是我的证书和公钥"
3.客户端验证证书
客户端检查:
- 证书是否由可信CA签发
- 域名是否匹配
- 证书是否过期/被吊销
验证通过才继续,不通过的话浏览器直接拦截
4.客户端生成预主密钥、交换密钥
- 客户端生成随机数C(预主密钥)
- 用服务器公钥加密随机数C,发给服务器
- 服务器用自己的私钥解密,得到随机数C
现在:
客户端和服务器同时拥有 A、B、C 三个随机数
双方用这三个数算出相同的会话密钥。
5.双方通知切换加密,握手完成
- 客户端发送:
- 以后我都用会话密钥加密通信
- 服务器发送:
- 我也是,以后全部加密
- SSL/TLS握手完成
- 之后传输HTTP数据,全部加密
核心原理
- 非对称加密(公钥+私钥): 只用来交换密钥
- 对称加密(会话密钥): 真正用来传输数据
- 原因:非对称加密慢,对称加密快,结合起来最安全高效
HTTPS
HTTPS = HTTP + SSL/TLS
不是新协议,是HTTP套上了SSL加密外壳
作用
在http原本功能的基础上,增加了:
- 加密
- 身份验证
- 数据完整性
默认端口
https的默认端口为443
HTTP、SSL/TLS、HTTPS关系
HTTPS 就是 HTTP 运行在 SSL/TLS 之上
