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 正在被淘汰

相关推荐
CANWeb冗余现场总线1 小时前
2毫秒扫描周期以太网Modbus TCP UDP高速通信:西门子SMART PLC+CANWeb现场总线远程扩展IO模块
网络协议·tcp/ip·udp
一条泥憨鱼2 小时前
【从0开始学习计算机网络】| CA证书、数字签名与中间人攻击:一次完整的安全握手之旅
计算机网络·安全·http·https
阿pin2 小时前
HTTP 协议的演进
网络·网络协议·http
跨境技工小黎2 小时前
IPFoxy动态住宅IP实测:做数据采集和爬虫可行吗?
爬虫·网络协议·tcp/ip
SendTomo3 小时前
send.wang(私传网)P2P直连加速文件传输
网络·网络协议·webrtc·html5·p2p
学计算机的计算基3 小时前
TCP 传输层硬核整理:三次握手、四次挥手、拥塞控制一次讲透
java·网络·笔记·网络协议·算法
海鸥两三3 小时前
【websocket合集2】websocket.js源码解析和页面调用示例
javascript·websocket·网络协议
Linux-lucky12 小时前
21-Linux学习之旅之HTTPS和安全加固
linux·运维·学习·ubuntu·https
游戏开发爱好者813 小时前
带签名时间戳接口的重放与压力测试实战,用动态值在发送前现算签名
网络协议·计算机网络·网络安全·ios·adb·https·压力测试