Appearance
http协议和https协议的区别
HTTP和HTTPS基本概念
http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP)。
https: 是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即 HTTP 下加入 SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要 SSL。https协议的主要作用是建立一个信息安全通道,来确保数组的传输,确保网站的真实性。
HTTP和HTTPS区别
一些概念
SSL/TLS
参考文章:通俗理解SSL/TLS协议区别与原理
发展史
1994年 网景公司设计了SSL 1.0协议 1995年 网景公司发布SSL 2.0版 1996年 SSL 3.0发布 1999年 互联网标准化组织ISOC接替网景公司发布了SSL 3.0升级版TLS 1.0(1998年网景公司被美国在线收购) 2006年和1008年 TLS 1.1和TLS 1.2发布(TLS1.2已经获得主流浏览器支持) 2008年8月,TLS 1.3版发布,性能好。移除了很多东西,速度快了很多,少了一次握手。
SSL由于安全性问题,已经被市场淘汰,不再使用,现在用的是TLS协议,他的根源还是SSL,网络上时常提到SSL是因为习惯了这个称呼。
原理
SSL/TLS要解决的问题是通信加密。
http传输是明文传输,非常不安全,客户端拿到的数据有可能被中间人篡改。因此,需要对HTTP的通信内容进行加密。
初始如何协商一个双方都可信的密钥来进行加密?
SSL/TLS协议的原理主要三板斧:摘要、非对称加密、对称加密
要解决的问题:
- 加密:解决窃听问题
- 摘要:保证数据完整性,解决篡改数据问题
- 数字签名:解决中间人攻击,冒充服务器
四次握手:
- 客户端 => 服务端:
- 随机数r1
- 客户端支持的协议版本和算法版本
- 服务端 => 客户端:
- 随机数r2
- 确定用的协议、算法版本
- CA签名的证书(证书包含了公钥)
- 服务端的数字签名
- 客户端 => 服务端:
- 采用CA证书提供的公钥,对一个随机数r3进行非对称加密,发送加密结果
- 根据r1,r2,r3生成对称加密密钥,并采用生成的密钥加密finish信息和摘要,发送加密结果
- 服务端 => 客户端:采用私钥解开非对称加密数据,得到客户端生成的随机数r3,然后根据r1,r2,r3生成对称加密密钥,解开finish信息和摘要,确认客户端对称加密符合预期。
- 发送对称加密密钥加密finish信息和摘要
如果客户端和服务端都能对Finish信息进行正常加解密且消息正确的被验证,则说明握手通道已经建立成功,接下来,双方可以进行对称加密的数据传输了。
证书
- 全称数字证书
- 一种基于公钥认证体系的电子文件,用于证明公钥持有者的身份
- 本质是对公钥施加数字签名
- 证书包含三类信息
- 公钥
- 拥有者身份信息
- 认证机构的签名
CA证书颁发机构
CA(Certificate Authority)是证书的签发机构,负责签发证书、认证证书、管理证书。
根证书
- 是信任链的起点,是一切安全信任的基石
- 来自公认可靠的政府机关、证书颁发机构以及非营利性组织
- 被预先安装在操作系统、浏览器等软件中
中间商
因为根证书的签发效率很低,要核准行政人员及机构法人等信息,流程很长,不足以满足广大互联网的需求,所以引入了中间商
中间商只要持有根证书机构签发的中介证书,就有权给服务商授权证书,这里服务商获得的证书叫终端实体证书。
信任链
整个信任链是一个以根证书为顶点的树状结构。当访问一个网站时,浏览器使用网站提供的电子证书执行认证路径验证算法,去匹配系统预安装的根证书,验证根节点到终端的路径是否为有效的信任链
信任链的不正确回溯
在验证证书的时候,不仅要验证证书本身是否合法(通过调用证书验证函数),还要对证书信任链进行回溯,确认信任链是有效的。
以下场景会导致信任链断裂:
- 信任链中任意一个非根节点的证书是自签发的(self-signed)
- 没有完成整个信任链中每个节点的检查
- 信任链中的某个节点证书缺失一些基础信息或者额外的重要扩展信息
- 信任链中上层节点证书失效或者被攻击者窃取
参考文章: