HTTP(超文本传输协议)和 HTTPS(HTTP + SSL/TLS)的核心区别是:HTTPS 在 HTTP 之下加了一层加密通道,解决明文传输带来的窃听、篡改、冒充三大问题。
一、基本定义
- HTTP(HyperText Transfer Protocol):应用层协议,默认端口 80,数据明文传输。
- HTTPS(HTTP Secure):在 HTTP 与 TCP 之间插入 SSL/TLS 层,默认端口 443,数据加密传输。
二、核心差异对照
| 维度 | HTTP | HTTPS |
|---|---|---|
| 传输内容 | 明文,可被抓包直接读取 | 密文,抓包看到的是乱码 |
| 端口 | 80 | 443 |
| 身份认证 | 无,无法确认对方是谁 | 通过数字证书验证服务器身份 |
| 完整性 | 无校验,中间可篡改 | MAC/哈希校验,篡改即报错 |
| 性能开销 | 低 | 略高(握手+加解密,现代硬件可忽略) |
| SEO/浏览器 | 标记“不安全” | 搜索加权,地址栏显示锁型图标 |
三、HTTPS 做了什么(通俗版)
- TCP 三次握手 → 建立连接
- TLS 握手:协商加密套件、校验证书、生成会话密钥
- 加密通信:后续 HTTP 报文都用会话密钥加解密
- 防窃听(别人看不懂)、防篡改(改了能发现)、防冒充(证书造假会被拦)
四、证书与信任链
- 服务器需部署 X.509 证书,由 CA(证书颁发机构)签发
- 浏览器内置根 CA 列表,逐级校验:根 CA → 中间 CA → 站点证书
- 自签名证书会被浏览器报警,仅适合内部测试
五、常见误区
- “HTTPS 完全匿名” ❌ —— 域名(SNI)在 TLS 1.2 及之前仍明文,TLS 1.3 + ESNI/eCH 才缓解
- “有 HTTPS 网站就安全” ❌ —— 只保证传输层安全,不防 XSS、SQL 注入、服务端漏洞
- “HTTP 比 HTTPS 快很多” ❌ —— TLS 1.3 握手 1-RTT 甚至 0-RTT,差距极小
六、现状与建议
- 公共网络、登录、支付、API、表单提交:必须用 HTTPS
- 纯静态公开展示页:也建议全站 HTTPS(浏览器策略、混合内容限制)
- 本地开发可用自签证书或 mkcert 工具;生产环境用 Let’s Encrypt 免费证书或云厂商托管证书