HTTP 和 HTTPS 到底有什么区别

本文最后更新于 2025年8月8日 17:31

Clipboard_Screenshot_1754641705.png

HTTPS 协议相比于 HTTP 协议,在三次握手之后多了一个 SSL/TLS 握手的过程,这个过程能够解决 HTTP 不安全的缺陷(报文明文传输),保证了报文的加密传输。

HTTP 主要存在了三个问题:报文易被窃听;报文易被篡改;目标网站容易被冒充。

HTTPS 通过以下方式来分别解决这几个问题:

  • 采用混合加密(对称加密和非对称加密)来对传输的报文进行加密,减少了传输信息被窃听的风险。
  • 采用摘要算法(哈希函数)为传输的数据生成一个独一无二的指纹,保证传输信息的完整性。
  • 通过数字证书,解决了冒充的风险。

简单理一理 TLS 的握手过程

SSL/TLS 协议的基本流程如下:

  • 客户端验证服务端的公钥
  • 客户端与服务端协商,生成一个会话密钥
  • 客户端与服务端使用生成的会话密钥进行信息传输

前两步就是就是 TLS 的握手过程。

image.png

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 到底有什么区别/
作者
Moonike
发布于
2025年8月8日
更新于
2025年8月8日
许可协议