目录
3. HTTPS 的工作原理(SSL 的握手过程) [面试高频考点]
1. 什么是 HTTPS
HTTPS 也是应用层的一个协议, 是在 HTTP 的基础上引入了一个加密层, 使得传输的数据更加安全.
HTTPS 出现, 只有一个目的: 安全.
HTTPS = HTTP + S (SSL / TLS) => SSL 也是一个专门用来加密的应用层协议, TLS 是它的升级版.
1.1 HTTPS 的由来
由于 HTTP 报文的 URL 中带有域名, 所以 URL 在广告行业起到一个重要作用: 广告主通过 URL 的域名来区分多个广告平台, 从而向广告平台支付广告费.
在十年前的时候(大概 2014 年左右), 由于网络法律条文还不够完善, 运营商就钻了法律的空子, 经常修改其他广告平台的 Referer(将域名改成自己的), 将广告费算到自己的头上, 以此为自己谋利益(运营商劫持).
正是因为这件事, 百度, 搜狗, 360 等大厂牵头, 将 HTTP 升级为了 HTTPS, 对 HTTP 数据报进行加密传输(Referer 也被加密了).
2. 加密
什么是加密呢??
我们上面提到的运营商劫持事件, 之所以运营商能够 URL 中的数据, 是因为 HTTP 报文中的数据是明文传输的, "明文" 就是指没有加密的数据, 任何人都能看得见.
而将这些 "明文" 数据升级到 "密文" 的过程, 就是加密. 并且, 明文和密文之间可以相互转化:
- 明文加密得到密文.
- 密文解密得到明文.
加密和解密的过程中, 一个关键的部件必不可少: 密钥.
有了密钥, 才能对数据进行加密和解密操作. (密钥是一个很长的字符串)
1.2 对称加密 / 非对称加密
加密的形式分为以下两大类:
- 对称加密: 加密和解密使用同一个密钥
- 非对称加密: 加密使用一个密钥, 解密使用另一个密钥
在非对称加密中, 使用的两把密钥虽然不同, 但是存在关联关系的, 不过外人很难猜~
在非对称加密中的两把密钥, 一个称为公钥, 一个称为私钥:
- 公钥: 公开出去的那把密钥, 所有人都能用. (用来加密, 可以当做一把锁)
- 私钥: 自己保存的那把密钥, 不让任何人知道. (用来解密, 当做公钥的钥匙)
注意: 一个服务器是可以给多个客户端提供服务的, 所以一个服务器和不同的客户端进行通信时, 使用的密钥都是不同的.
就像你家门的钥匙, 和我家门的钥匙, 必然是不同的~~
3. HTTPS 的工作原理(SSL 的握手过程) [面试高频考点]
最开始时, 数据传输时是以 "明文" 的方式进行传输的, 既然是明文, 那么数据是很容易被黑客截获的, 极不安全.(例如, 运营商劫持)
3.1 引入对称加密
我们在明文传输的基础上, 使用对称密钥来对数据进行对称加密.
此时, 客户端就可以对数据使用 key 来进行加密,