目录
[一、HTTP 与 HTTPS 的基本概念](#一、HTTP 与 HTTPS 的基本概念)
[二、HTTP 与 HTTPS 的核心区别](#二、HTTP 与 HTTPS 的核心区别)
[三、为什么需要 HTTPS?](#三、为什么需要 HTTPS?)
[四、HTTPS 的加密通信原理(核心)](#四、HTTPS 的加密通信原理(核心))
[1. 客户端发起 HTTPS 请求](#1. 客户端发起 HTTPS 请求)
[2. 服务端返回 SSL/TLS 证书](#2. 服务端返回 SSL/TLS 证书)
[3. 客户端验证证书](#3. 客户端验证证书)
[4. 客户端生成对称密钥并用公钥加密](#4. 客户端生成对称密钥并用公钥加密)
[5. 服务端用私钥解密获取对称密钥](#5. 服务端用私钥解密获取对称密钥)
[6. 双方使用对称密钥加密通信](#6. 双方使用对称密钥加密通信)
[五、为什么 HTTPS 既用非对称又用对称加密?](#五、为什么 HTTPS 既用非对称又用对称加密?)
[六、总结:HTTP 与 HTTPS 的本质区别](#六、总结:HTTP 与 HTTPS 的本质区别)
一、HTTP 与 HTTPS 的基本概念
- HTTP(HyperText Transfer Protocol) :超文本传输协议,是 Web 应用中最基础的通信协议,运行在 TCP 协议之上,默认端口 80 。它以 明文方式传输数据 ,不提供任何加密或身份验证机制。
- HTTPS(HTTP Secure) :在 HTTP 的基础上增加了 SSL/TLS 加密层 ,全称为 HTTP over TLS/SSL ,运行在 TCP 协议之上,默认端口 443 。它通过加密通信内容,解决了 HTTP 的安全缺陷。
二、HTTP 与 HTTPS 的核心区别
对比维度 | HTTP | HTTPS |
---|---|---|
协议基础 | 应用层协议,明文传输 | HTTP + SSL/TLS,加密传输 |
端口 | 80 | 443 |
安全性 | 不安全,数据容易被窃听、篡改 | 安全,支持加密、身份验证与数据完整性 |
数据传输 | 明文,容易被中间人攻击 | 加密传输,防止窃听与篡改 |
证书机制 | 无 | 需要 SSL/TLS 数字证书,通常由 CA 签发 |
SEO 与浏览器支持 | 逐渐被标记为"不安全" | 被浏览器与搜索引擎优先推荐,有利于 SEO |
适用场景 | 静态页面、内部系统等非敏感场景 | 登录、支付、用户数据传输等安全敏感场景 |
核心结论:HTTPS 是 HTTP 的安全版本,解决了数据传输的安全性问题,是现代 Web 应用的标配。
三、为什么需要 HTTPS?
在 HTTP 协议下,浏览器与服务器之间的所有通信都是明文的,这意味着:
- 数据可被窃听 :中间人可以监听网络流量,获取用户名、密码、Cookie 等敏感信息。
- 数据可被篡改 :攻击者可以修改传输内容,比如将支付金额篡改,或将脚本注入页面。
- 身份无法验证 :用户无法确认当前访问的服务器是否为真正的服务提供者,存在被冒充的风险。
HTTPS 通过加密、身份验证与数据完整性校验,从根本上解决了上述问题。
四、HTTPS 的加密通信原理(核心)
HTTPS 的安全性来源于 SSL/TLS 协议 ,其核心是:使用非对称加密安全地传递一个对称密钥,之后使用对称加密保护通信内容。下面是 HTTPS 建立连接的主要流程:
1. 客户端发起 HTTPS 请求
用户通过浏览器访问 https://example.com
,客户端向服务器发起 HTTPS 请求,默认使用 443 端口。
2. 服务端返回 SSL/TLS 证书
服务端收到请求后,返回自身的 SSL 数字证书,该证书包括:
- 服务器公钥
- 证书持有者信息(如域名)
- 证书有效期
- 由 CA(Certificate Authority,证书颁发机构) 签发的数字签名
该证书用于证明"我是合法的服务端,不是中间人冒充的"。
3. 客户端验证证书
客户端接收到证书后,会进行如下验证:
- 证书是否由受信任的 CA 签发
- 证书是否过期
- 证书上的域名是否与当前访问的域名一致
- 证书签名是否合法
如果验证失败,浏览器会提示"连接不安全"或"证书无效"。
4. 客户端生成对称密钥并用公钥加密
验证通过后,客户端会生成一个随机的对称密钥(会话密钥) ,用于后续通信内容的加密。然后,客户端使用服务端证书中的 公钥加密该对称密钥,并将加密后的密钥发送给服务端。
为什么用公钥加密?因为只有服务端拥有对应的私钥,可以解开这个对称密钥,确保传输安全。
5. 服务端用私钥解密获取对称密钥
服务端收到加密的对称密钥后,使用自己的 私钥解密,得到客户端生成的对称密钥。
至此,客户端和服务端都持有了相同的对称密钥,且该密钥是通过安全方式传递的。
6. 双方使用对称密钥加密通信
接下来,客户端与服务端之间的所有数据传输(如 HTTP 请求与响应),都使用这个 对称密钥进行加密与解密。由于对称加密效率高,适合大数据量的加密传输。
五、为什么 HTTPS 既用非对称又用对称加密?
这是 HTTPS 设计的精华所在:
加密类型 | 用途 | 特点 | 为什么用在这里? |
---|---|---|---|
非对称加密(如 RSA) | 安全地传递对称密钥 | 安全性高,但速度慢 | 用来加密"对称密钥",确保密钥传输不被窃取 |
对称加密(如 AES) | 加密实际通信内容 | 速度快,适合大数据量 | 双方使用同一个密钥加密数据,效率高 |
总结:非对称加密用于安全地协商出一个密钥,对称加密用于高效地加密通信内容。
六、总结:HTTP 与 HTTPS 的本质区别
项目 | HTTP | HTTPS |
---|---|---|
传输方式 | 明文传输,不安全 | 加密传输,安全可靠 |
协议层 | 应用层协议 | HTTP + SSL/TLS 协议 |
端口 | 80 | 443 |
证书 | 无 | 需要权威机构签发的 SSL 证书 |
适用场景 | 非敏感数据展示 | 登录、支付、用户信息等敏感操作 |
用户信任 | 浏览器提示"不安全" | 浏览器显示安全锁,增强用户信任 |
HTTPS 已不再是"可选项",而是"必选项"。无论是从用户隐私、数据安全,还是从 SEO、浏览器兼容性、企业合规等角度考虑,部署 HTTPS 都是现代 Web 服务的基石。