HTTP 与 HTTPS 详解

一、核心对比

HTTP (HyperText Transfer Protocol)是超文本传输协议,明文传输 ,不安全。HTTPS (HyperText Transfer Protocol Secure)是 HTTP 的安全版本,在 HTTP 之下加入了 TLS/SSL 加密层,确保数据传输的机密性、完整性和身份认证。

维度 HTTP HTTPS
安全性 明文传输,易被窃听、篡改、劫持 加密传输,防窃听、防篡改、防冒充
协议层 应用层直接基于 TCP 应用层 → TLS/SSL → TCP
默认端口 80 443
证书 不需要 需要 SSL/TLS 证书(由 CA 机构颁发)
性能 更快(无加密开销) 稍慢(握手和加密解密有开销)
SEO 搜索引擎标记"不安全" 搜索引擎优先收录,排名加权
URL 前缀 http:// https://

二、HTTPS 的加密原理

HTTPS 并非单独的新协议,而是 HTTP over TLS/SSL

复制代码
HTTP 数据
    ↓
TLS/SSL 层(加密 + 认证 + 完整性校验)
    ↓
TCP 传输层
    ↓
IP 网络层

TLS 提供三大保障:

  1. 机密性:对称加密传输数据,第三方无法窃听内容。
  2. 完整性:消息认证码(MAC)校验,防止数据被篡改。
  3. 身份认证:数字证书验证服务器身份,防止 DNS 劫持/钓鱼网站。

三、TLS 握手过程

HTTPS 在 TCP 三次握手之后,还要进行 TLS 握手(以 TLS 1.2 为例,1-RTT):

复制代码
客户端                                    服务器
   |                                        |
   |  ① Client Hello                        |
   |     (支持的 TLS 版本 + 加密套件 + 随机数)  |
   | --------------------------------------> |
   |                                        |
   |  ② Server Hello                        |
   |     (选定 TLS 版本 + 加密套件 + 随机数)    |
   |     + 证书(含公钥)                      |
   | <-------------------------------------- |
   |                                        |
   |  ③ Client Key Exchange                 |
   |     (用公钥加密预主密钥 Pre-master Secret) |
   |     + Change Cipher Spec                 |
   | --------------------------------------> |
   |                                        |
   |  ④ Change Cipher Spec + Finished        |
   | <-------------------------------------- |
   |                                        |
   [双方用协商的密钥进行对称加密通信]

TLS 1.3 优化 :握手压缩为 1-RTT(甚至 0-RTT),速度大幅提升。


四、数字证书与 CA 机制

为什么需要证书?

  • 防止中间人攻击:客户端需要确认"跟我通信的确实是目标服务器,不是冒充者"。

证书验证流程:

  1. 服务器向 CA(Certificate Authority,证书颁发机构) 申请证书,提交公钥和域名信息。
  2. CA 验证域名所有权后,用 CA 的私钥对服务器公钥和域名进行签名,生成证书。
  3. 客户端(浏览器)内置了各大 CA 的公钥,收到证书后用 CA 公钥验证签名。
  4. 验证通过 → 信任该服务器;验证失败 → 提示"证书不受信任"。

常见证书类型:

  • DV(Domain Validation):只验证域名,最便宜,个人/小站常用。
  • OV(Organization Validation):验证企业身份,地址栏显示公司名。
  • EV(Extended Validation):最严格验证,地址栏曾显示绿色公司名(现多数浏览器已取消绿条)。

五、HTTP 为什么不安全?

三种典型攻击:

攻击类型 原理 HTTPS 如何防御
窃听(Sniffing) 明文传输,抓包工具(Wireshark)可直接看到内容 对称加密,密文不可读
篡改(Tampering) 中间人修改传输内容(如注入广告、跳转钓鱼页) MAC 校验,篡改后校验失败
冒充(Spoofing) DNS 劫持到假网站,伪造服务器身份 数字证书验证,假网站无合法证书

六、性能差异与优化

HTTPS 比 HTTP 慢吗?

  • TLS 握手:增加 1-2 个 RTT(TLS 1.3 已优化到 1-RTT 甚至 0-RTT)。
  • 加密解密:CPU 开销增加约 5%-10%,现代硬件(AES-NI 指令集)已可忽略。
  • 证书传输:证书链可能增加几 KB 流量。

优化手段:

  • TLS 1.3:减少握手往返。
  • 会话复用(Session Resumption):跳过完整握手。
  • OCSP Stapling:服务器预先获取证书状态,避免客户端单独查询 CA。
  • HTTP/2 + HTTPS:多路复用、头部压缩,实际体验往往比 HTTP/1.1 更快。

七、常见问题

Q1:HTTPS 一定安全吗?

答: 不是绝对安全。如果用户主动信任了恶意证书、或客户端被植入根证书(如公司内网监控),HTTPS 仍可能被中间人解密。另外,HTTPS 只保护传输过程,不保护服务器端的数据泄露。


Q2:为什么 HTTPS 要同时用对称加密和非对称加密?

答:

  • 非对称加密(RSA/ECDHE):用于握手阶段交换对称密钥,解决"密钥如何安全传递"的问题。
  • 对称加密(AES):用于后续数据传输,速度快、开销低。
  • 如果全程用非对称加密,性能会差 100 倍以上。

Q3:HTTP 可以升级到 HTTPS 吗?怎么升?

答:

  • 申请 SSL 证书(Let's Encrypt 免费,或购买商业证书)。
  • 服务器配置证书和私钥(Nginx/Apache/IIS)。
  • 强制 301 重定向 HTTP → HTTPS。
  • 开启 HSTS(HTTP Strict Transport Security),告诉浏览器以后自动用 HTTPS 访问。

Q4:什么是 HSTS?

答: 一种安全策略机制,服务器通过响应头 Strict-Transport-Security: max-age=31536000 告诉浏览器:未来一年内,该域名必须使用 HTTPS 访问,即使用户输入 http:// 也不允许降级。防止 SSL Strip 攻击。


八、总结

HTTP 是"裸奔",数据在公网上明文传输,任何人都能看、能改、能冒充。

HTTPS 是"穿盔甲" ,通过 TLS 加密 + 证书认证,确保只有通信双方能读懂内容,且对方身份真实可信。现代互联网,HTTPS 是标配,HTTP 正在被淘汰

相关推荐
牛油果子哥q6 小时前
C++对接LLM完整工程:异步HTTP请求、JSON解析、超时容错、重连兜底
c++·http·json
呆呆敲代码的小Y6 小时前
TCP / UDP 对比介绍
网络·网络协议·tcp/ip·udp·tcp·tcp/udp
SKH.6 小时前
网络(4)HTTP协议与TCP并发服务器
网络·tcp/ip·http
你不是我我9 小时前
【AI 测评】群晖 NAS 部署 Vaultwarden:从 HTTPS 到浏览器自动填充的完整密码管理流程
网络协议·http·https
IT大白鼠16 小时前
Ingress 与 Ingress-Controller:K8s 七层 HTTP 反向代理技术详解与实践
http·容器·kubernetes
明月_清风18 小时前
MCP vs ACP vs LSP:AI 时代三大协议的「三足鼎立」
人工智能·网络协议·agent
我爱cope19 小时前
【计算机网络 | 传输层3:TCP 协议概述:面向连接、可靠传输到底意味着什么?】
网络·网络协议·学习·tcp/ip·计算机网络·传输层
myy-learn1 天前
30-HTTP协议
网络·网络协议·http
开开心心就好1 天前
免费刷题软件推荐,支持导入题库自动判题
网络·网络协议·tcp/ip·jupyter·智能手机·电脑·idea
幼儿园蛋小黄1 天前
基于 TCP 的嵌入式网络通信学习总结
网络协议·学习·tcp/ip