HTTP 和 HTTPS 到底有什么区别
本文最后更新于 2025年8月8日 17:31

HTTPS 协议相比于 HTTP 协议,在三次握手之后多了一个 SSL/TLS 握手的过程,这个过程能够解决 HTTP 不安全的缺陷(报文明文传输),保证了报文的加密传输。
HTTP 主要存在了三个问题:报文易被窃听;报文易被篡改;目标网站容易被冒充。
HTTPS 通过以下方式来分别解决这几个问题:
- 采用混合加密(对称加密和非对称加密)来对传输的报文进行加密,减少了传输信息被窃听的风险。
- 采用摘要算法(哈希函数)为传输的数据生成一个独一无二的指纹,保证传输信息的完整性。
- 通过数字证书,解决了冒充的风险。
简单理一理 TLS 的握手过程
SSL/TLS 协议的基本流程如下:
- 客户端验证服务端的公钥
- 客户端与服务端协商,生成一个会话密钥
- 客户端与服务端使用生成的会话密钥进行信息传输
前两步就是就是 TLS 的握手过程。

Client Hello
客户端向服务端发起加密通信请求,并传输以下信息:
- 客户端支持的 TLS 版本
- 客户端支持的密码套件列表,如 RSA 加密算法
- 客户端生成的随机数 Client Random(用于后续生成会话密会话密钥)
Server Hello
服务器收到客户端请求后,向客户端发出响应,也就是 SeverHello。服务器回应的内容有如下内容:
- 确认 TLS 协议版本,如果浏览器不支持,则关闭加密通信
- 服务器生成的随机数 Server Random(用于后续生成会话密会话密钥)
- 服务端确认的密码套件列表,如 RSA 加密算法
- 服务器的数字证书
客户端回应
客户端收到服务器的回应之后,首先通过浏览器或者操作系统中的 CA 公钥,确认服务器的数字证书的真实性。 如果证书没有问题,客户端会从数字证书中取出服务器的公钥,然后使用它加密报文,向服务器发送如下信息:
- 一个随机数(pre-master key),该随机数会被服务器公钥加密
- 加密通信算法改变通知,表示随后的信息都将用会话密钥加密通信
- 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时把之前所有内容的发生的数据做个摘要,用来供服务端校
服务器和客户端有了这三个随机数(Client Random、Server Random、pre-master key),接着就用双方协商的加密算法,各自生成本次通信的会话密钥。
服务端回应
服务器收到客户端的第三个随机数(pre-master key)之后,通过协商的加密算法,计算出本次通信的会话密钥。 然后,向客户端发送最后的信息:
- 加密通信算法改变通知,表示随后的信息都将用会话密钥加密通信
- 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时把之前所有内容的发生的数据做个摘要,用来供客户端校验。
至此,整个 TLS 的握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的 HTTP 协议,只不过用会话密钥加密内容。
HTTP 和 HTTPS 到底有什么区别
http://example.com/计算机网络/HTTP 和 HTTPS 到底有什么区别/