【Hello,前端!】带你了解 HTTP 与 HTTPS| 青训营笔记

87 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第9天

HTTP、HTTPS,相信每个前端er对这两个词都不会陌生吧,同时这两个次也是始终出现在我们浏览器地址栏最前面的两个词,那 HTTP 和 HTTPS 到底是什么呢,跟随 Richy 一起来了解一下吧~

定义

HTTP

HTTP,HyperText Transfer Protocol,即超文本传输协议。它是一种用于分布式、协作式和超媒体信息系统的应用层协议,基于请求与响应、无状态的应用层协议,一般基 于TCP/IP 协议进行数据传输。

通俗点来解释,就是 HTTP 定义了一种发布和接收 HTML 页面的方法,浏览器和网站服务器之间通过 HTTP 进行通信,所有的网站都要遵循这个规则来访问网站和交换数据。

HTTP 历经四个版本迭代:HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2,已经成为互联网上应用最为广泛的一种网络协议。

HTTPS

HTTPS,Hypertext Transfer Protocol Secure,即超文本传输安全协议,它实在 HTTP 协议的基础上利用 SSL/TLS 来加密数据包,因此它比 HTTP 协议要安全得多。

开发 HTTPS 协议的主要目的,就是要求请求者向网站服务器的身份认证,以保护用户的数据隐私和完整性。

因为 HTTP 明文传输的特性,使得在进行数据传输的过程中非常的不安全,容易被黑客劫持,所以 HTTPS 被广泛要求强制使用,从2017年开始 Chrome 浏览器就将所有收集密码或信用卡数据的 HTTP 页面标记为“不安全”,并禁止用户访问,此后更是将带有输入数据的 HTTP 页面都标记为“不安全”。HTTPS 的强制推广就是在为用户的数据做好保障。

HTTPS 是如何加密的

有何区别

HTTP 协议的特点:

  • 无状态:协议不会存储客户端的状态,这将导致一些数据无法持久化存储,例如每次访问网站都需要重新登录;
  • 基于请求与响应:由客户端主动发起请求,随后服务端进行响应;
  • 简单快速、灵活:因为只需要 TCP 三次握手就可以建立连接,非常迅速;
  • 明文通信:所有数据都是明文传输,泄露风险高;
  • 无身份确认:容易被伪造非法请求篡改和窃取数据。

HTTPS 协议的特点:

  • 持久化状态:通过 Cookie/Session 技术存储和验证用户的状态,避免重复登录;
  • 内容加密:采用 SSL 技术进行加密,即使中间者拦截请求也无法获取明文数据;
  • 验证身份:通过证书认证来确认客户端访问是否的正确的服务器;
  • 数据保障:通过加密算法和密钥防止在传输过程中内容被中间者篡改。

HTTPS 的请求过程

1、客户端发起 HTTPS 请求

就是我们平时点击 HTTPS 网址或者在地址栏键入 HTTPS 网址,就会向服务端发送 HTTPS 请求。

2、申请证书

使用 HTTPS 请求的服务器需要申请 HTTPS 证书,一般需要向特定机构申请。证书其实就是包含了一对公钥和私钥,一个负责加密一个负责解密。

3、发送公钥

公钥包含了 HTTPS 证书的各种信息,以及有效期限。

4、 解析证书

客户端通过 TLS 来解析证书,对认证的公钥进行认证,如授权机关、到期日期等,一旦出现异常,就会出现一个提示框,提醒用户有问题。如果证明是正确的,则会产生一个随机值,并将其加密,然后准备传输到服务端。

5、传输加密信息

客户端通过随机值和证书加密信息,服务端通过算法获得该随机值然后解析,这样客户和服务器之间的数据就可以实现加密传输。

6、服务端对信息进行解密

所谓对称加密,就是将信息和私钥通过特定的算法结合在一起,这样只有知道了私钥和解析算法,才能获得数据,所以,加密算法是否足够强大,密钥是否足够复杂,决定了数据的安全性。

7、返回加密后的信息

由服务端使用私钥进行加密,返回给客户端。

8、客户端解密信息

客户端通过同样的方法将服务器发送的信息进行解密,从而获得里面的数据内容,而中间者就算窃听到了这些数据,也无法破译。