持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
核心描述
- https 是什么
- https 并不是一个新的应用层协议,而是在 http 协议的基础上加了一层用于级加密解密的 SSL 或 TLS 安全层
- SSL 或 TLS 其实是在 OSI 七层网络层的传输层(同 TCP 协议是一层)
- https 解决了什么问题
- 解决了 http 协议传输数据不安全的问题
- https 的加密过程(两大阶段:证书验证阶段、数据传输阶段)
- 证书验证阶段(通过 tcp,并且是非对称加密)
- 0、服务端去 CA 机构申请发给客户端的公钥+证书,以及解密的私钥
- 1、浏览器发起一个请求,带有其支持的加密规则,以及一个随机字符串 random_client,用于后续生成浏览器和服务端共用的传输过程使用的协商密钥
- 2、服务端收到请求后,选择一套加密规则,并返回自己的证书信息(包括有效时间、网站地址、公钥等等),以及一个随机字符串 random_server,用于后续生成浏览器和服务端共用的传输过程使用的协商密钥
- 3、浏览器验证返回的证书是否有效,通过本地已有的可信任的根证书,校验服务端返回的证书签名,目的是获取服务端的公钥
- 4、浏览器认证成功后,再生成一个随机字符串 premaster secret,这个随机字符串是通过服务端返回的公钥进行加密的,只有服务端可以解密,同时使用 random_client + random_server + premaster secret 3个字符串,通过与服务端协商的加密算法产生一个协商密钥,结合之前所有通信参数的 hash 值,使用协商密钥进行加密,发送一个用于服务端验证的数据段
- 5、服务端收到随机字符串后,利用和公钥配对的私钥,解析这个随机字符串,服务端的利用 random_client + random_server + premaster secret ,通过与浏览器协商的加密算法产生一个协商密钥,用于后续的数据传输时的加密解密,利用之前所有通信参数的 hash 值,校验数据的准确性。同样也用协商密钥发送一个用于浏览器验证的数据段
- 6、浏览器利用协商密钥对服务端返回的数据段进行解密验证,如果验证成功,则开始进入数据传输阶段
- 数据传输阶段(通过 http,并且是对称加密)
- 利用 http 协议,使用协商密钥对数据进行对称加密,开始浏览器与服务器之间的数据交互
- 证书验证阶段(通过 tcp,并且是非对称加密)
知识拓展
- OSI 七层网络模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
- CA 机构是什么
- 数字证书认证机构(英语:Certificate Authority,缩写为CA),也称为电子商务认证中心、电子商务认证授权机构,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
- 许多应用软件(例如操作系统、网页浏览器)会预先安装可被信任的根证书,这代表用户授权了应用软件代为审核哪些根证书机构属于可靠。
- 信任链,或称数字证书链,是一连串的数字证书,由根证书为起点,透过层层信任,使终端实体证书的持有者可以获得转授的信任,以证明身份。
- https 中的对称加密和非对称加密
- https 不仅使用了非对称加密,也使用了对称加密
- 非对称加密用于证书的验证阶段
- 对称加密用于数据的传输阶段,这是因为对称加密的运算比非对称加密更快
- 每次进行HTTPS请求时都必须在SSL/TLS层进行握手传输密钥吗
- 服务器会为每个浏览器(或客户端软件)维护一个session ID,在TLS握手阶段传给浏览器,浏览器生成好密钥传给服务器后,服务器会把该密钥存到相应的session ID下,之后浏览器每次请求都会携带session ID,服务器会根据session ID找到相应的密钥并进行解密加密操作。
- https 并不是绝对安全的
- 中间人攻击:就是在用户不经意的情况下,安装了不安全的证书,中间人则对数据的浏览器、服务端分别进行加密、解密,从而获取数据
- 加密算法的选择(复杂程度)
参考资料
- 深入理解HTTPS原理、过程与实践:zhuanlan.zhihu.com/p/26682342
- HTTPS加密原理:www.helloworld.net/p/214384527…
- 终于有人把 HTTPS 原理讲清楚了!:cloud.tencent.com/developer/a…
- HTTPS详解二:SSL / TLS 工作原理和详细握手过程:segmentfault.com/a/119000002…
- HTTPS协议详解(四):TLS/SSL握手过程:cloud.tencent.com/developer/n…
浏览知识共享许可协议
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。