导航


HTML

CSS

JavaScript

浏览器 & 网络

版本管理

框架

构建工具

TypeScript

性能优化

软实力

算法

UI、组件库

Node

冷门技能

HTTP 和 HTTPS 的基本概念

HTTP 和 HTTPS 的区别?

HTTP 传输的数据都是未加密的,也就是明文的,网景公司设置了 SSL 协议来对 HTTP 协议传输的数据进行加密处理,简单来说 HTTPS 协议是由 HTTP 和 SSL 协议构建的可进行加密传输和身份认证的网络协议,比 HTTP 协议的安全性更高。

主要的区别如下:

⭐️ HTTPS 协议的工作原理

1. 客户端发起 HTTPS 请求

示例

Client Hello: TLS version, supported ciphers, compression methods

2. 服务器响应,传递证书

服务器传递的内容包括:

示例

Server Hello: Chosen cipher, Server Certificate (includes public key)

3. 浏览器验证服务器证书

如果证书通过了所有验证,浏览器就认为服务器是可信的。


4. 生成会话密钥并加密传输

接下来,浏览器会采取以下步骤:

这个过程确保了即使有人截获了加密的会话密钥,也无法解密,因为只有服务器拥有对应的私钥。

示例


Client: [Encrypted session key with server's public key]

5. 服务器解密会话密钥

至此,双方共享了一个会话密钥,且这个会话密钥是安全的(因为只有服务器拥有对应的私钥)。


6. 双方使用对称加密进行通信

对称加密相比于非对称加密(RSA、ECC),计算效率更高,因此用于实际的数据传输。而非对称加密(RSA)则主要用于安全的密钥交换。

那么浏览器与服务器如何通过这个会话密钥来加密和解密数据呢?

6.1 加密请求数据

具体的加密步骤如下:

  1. 浏览器获取要发送的数据,如 HTTP 请求的内容(路径、方法、参数等)。
  2. 使用会话密钥和选定的对称加密算法(如 AES)加密数据,生成一个 密文(即加密后的数据)。
  3. 浏览器将加密后的数据通过 HTTPS 传输通道发送给服务器。

加密后的数据即使被拦截,也无法被读取或篡改,除非拥有正确的会话密钥。

6.2 服务器解密请求数据

具体的解密步骤:

  1. 服务器收到加密的 HTTP 请求数据。
  2. 使用会话密钥和相同的对称解密算法对密文进行解密,得到原始的请求内容。
  3. 服务器根据解密后的请求内容进行相应处理,比如处理用户登录信息、查询数据库等。

6.3 加密响应数据

服务器处理完请求后,需要将响应结果返回给浏览器。响应数据也会经过同样的加密步骤:

  1. 服务器将响应内容(如 HTML 页面、JSON 数据、状态码等)准备好。
  2. 使用会话密钥对响应数据进行加密,生成密文。
  3. 服务器将加密的响应数据通过 HTTPS 传输回给浏览器。

6.4 浏览器解密响应数据

浏览器收到服务器加密的响应后,再次使用会话密钥进行解密,还原成可读的响应内容。然后,浏览器会处理和渲染该内容,比如更新页面、展示用户信息等。


7. 数据完整性校验


8. 客户端和服务器的通信

例如:


9. 连接终止


总结 HTTPS 的主要步骤:

  1. 客户端发起 HTTPS 请求,告知服务器支持的加密算法等信息。
  2. 服务器响应并传递证书,包括公钥和加密信息
  3. 浏览器验证服务器证书,确保服务器可信。
  4. 浏览器生成会话密钥,并使用服务器的公钥加密会话密钥,发送给服务器。
  5. 服务器使用私钥解密会话密钥,双方共享会话密钥。
  6. 使用「会话密钥」对称加密进行通信,确保传输中的数据安全和加密。
  7. 数据完整性校验,保证数据未被篡改。
  8. 双方通信通过安全通道进行,敏感信息被加密传输。
  9. 连接终止,释放加密相关资源。

案例分析

场景:用户登录银行网站

  1. 用户输入银行网站的 URL,浏览器通过 HTTPS 发起请求。
  2. 服务器返回包含数字证书的响应,证书中包含银行网站的公钥。
  3. 浏览器验证证书,确保银行网站的身份真实可信。
  4. 浏览器生成一个随机的对称密钥(会话密钥),用银行网站的公钥加密后发送给服务器。
  5. 服务器用私钥解密会话密钥,接下来客户端和服务器就可以通过这个对称密钥加密的安全通道进行通信。
  6. 用户输入登录信息,数据通过对称加密的方式被传输到服务器。
  7. 服务器返回加密后的响应,用户登录成功。

在这个过程中,用户的登录信息因为被加密,不会被攻击者截获,保证了通信的机密性和安全性。

HTTPS 协议的优点

HTTPS 协议的缺点