HTTP和HTTPS 完整指南
2026/8/3 15:52:57 网站建设 项目流程

HTTP 与 HTTPS 完整指南

一、HTTP 协议详解

1.1 什么是 HTTP

HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网的基石协议,专门用于在客户端(浏览器)和服务器之间传输网页、图片、视频等资源。

核心特点:

  • 无状态协议:每次请求都是独立的,服务器不会记住你上一次访问的信息
  • 明文传输:所有数据以可读文本形式在网络中传输
  • 基于 TCP:运行在可靠的 TCP 连接之上,默认使用80 端口

⚠️致命缺陷:由于采用明文传输,网络中的任何中间节点(路由器、网关、黑客抓包工具)都能直接读取传输内容,包括账号密码、聊天记录、浏览历史等敏感信息。


1.2 HTTP 工作原理

完整的 HTTP 通信分为两个阶段:请求(Request)响应(Response)

阶段一:客户端发起 HTTP 请求
  1. 浏览器通过TCP 三次握手与服务器 80 端口建立连接
  2. 连接成功后,客户端按照固定格式发送 HTTP 请求报文
  3. 请求报文包含:请求方式(GET/POST)、URI协议版本号MIME 头部信息

1.3 HTTP 请求报文结构

HTTP 请求由三部分组成:

[请求行] [请求头部(MIME 信息)] [空行] [请求正文(可选)]

示例 1:GET 请求(最常用,访问网页)
GET /index.html HTTP/1.1 Host: www.baidu.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.9 Accept-Encoding: gzip, deflate Connection: keep-alive

结构拆解:

① 请求行(首行)

GET /index.html HTTP/1.1
  • GET:请求方法(获取资源)
  • /index.html:统一资源标识符(URI),指定要访问的资源路径
  • HTTP/1.1:协议版本号

② 请求头部(MIME 信息)

请求头部包含三类信息:

类别字段作用
请求修饰符HostConnection指定访问的主机域名、是否保持长连接
客户端信息User-Agent告诉服务器客户端的浏览器类型、操作系统版本
许可接收内容AcceptAccept-LanguageAccept-Encoding告知服务器:我可以接收 HTML 网页、中文文本、gzip 压缩数据

📌重点:头部末尾必须空一行,GET 请求通常不需要携带请求正文


示例 2:POST 请求(提交表单数据)
POST /login.php HTTP/1.1 Host: test.com User-Agent: Chrome/120.0 Accept: text/html Content-Type: application/x-www-form-urlencoded Content-Length: 27 username=admin&password=123456

新增字段说明:

  • Content-Type:提交数据的格式(这里是表单格式)
  • Content-Length:请求正文的字节长度(27 字节)
  • 空行之后:就是提交的表单数据(请求正文)

💡理解要点:TCP 三次握手打通 80 端口后,客户端将上述整段文本原样发送给服务器,服务器解析后返回网页内容——这就是 HTTP 请求的全过程。


1.4 HTTP 响应报文结构

服务器收到请求后,返回 HTTP 响应报文,结构如下:

[状态行] [响应头部(MIME 信息)] [空行] [响应正文(网页内容/数据)]

示例 1:成功响应(200 OK)
HTTP/1.1 200 OK Server: nginx/1.20.1 Date: Sun, 02 Aug 2026 08:30:22 GMT Content-Type: text/html; charset=utf-8 Content-Length: 128 Connection: keep-alive <html> <body> <h1>欢迎访问网页首页</h1> <p>这是服务器返回的页面内容</p> </body> </html>

结构拆解:

① 状态行(首行)

HTTP/1.1 200 OK
  • HTTP/1.1:协议版本号
  • 200:状态码(代表请求成功)
  • OK:状态描述文字

② 响应头部(MIME 信息)

类别字段作用
服务器信息Server标明服务器软件及版本(nginx/1.20.1)
实体信息Content-TypeContent-Length描述返回内容的格式、大小
其他DateConnection响应时间、连接状态

③ 响应正文
空行之后的 HTML 代码,就是浏览器最终渲染的页面内容


示例 2:错误响应(404 Not Found)
HTTP/1.1 404 Not Found Server: Apache/2.4.41 Date: Sun, 02 Aug 2026 08:35:10 GMT Content-Type: text/html; charset=gbk Content-Length: 96 <h2>404错误:您访问的页面不存在</h2>
  • 状态码404:资源不存在
  • 响应正文展示错误提示页面

1.5 常见 HTTP 状态码

状态码含义说明
200OK请求成功,服务器正常返回内容
301Moved Permanently永久重定向,资源已永久移动到新位置
302Found临时重定向,资源暂时在另一个位置
400Bad Request请求语法错误,服务器无法理解
401Unauthorized需要身份验证(未登录或登录失效)
403Forbidden服务器拒绝访问(权限不足)
404Not Found请求的资源不存在
500Internal Server Error服务器内部错误
502Bad Gateway网关错误,上游服务器响应异常
503Service Unavailable服务暂时不可用(服务器过载或维护)

二、SSL/TLS 协议详解

2.1 SSL 与 TLS 的关系

SSL(Secure Sockets Layer,安全套接层)

  • 最早由网景公司(Netscape)发明的加密协议
  • 经历了 SSL 1.0、2.0、3.0 三个版本
  • ⚠️现已全部淘汰,存在严重安全漏洞,现代浏览器已禁用

TLS(Transport Layer Security,传输层安全协议)

  • 由 IETF 组织在 SSL 3.0 基础上重新设计的继任版本
  • 本质是SSL 的安全升级版
  • 日常口语中,“SSL” 和 “TLS” 经常混用,但规范名称是TLS

💡理解:网址开头的https://中的加密层,规范叫法是TLS,老式叫法统称SSL


2.2 TLS/SSL 的核心作用

HTTP 的致命问题:所有数据明文传输,抓包即可看到账号、密码、聊天记录。

TLS/SSL 解决三大安全问题:

问题解决方案效果
窃听风险数据加密传输内容全程密文,中间人抓包只能看到乱码
冒充风险身份认证验证网站真实性,防止钓鱼网站伪装成银行、购物网站
篡改风险完整性校验数据被中途篡改(如劫持替换文件),两端立即发现并丢弃

2.3 TLS 在网络层级中的位置

应用层:HTTP/FTP/SMTP ↓ 传输层:TLS/SSL(加密层) ↓ 传输层:TCP ↓ 网络层:IP

工作流程:

  1. 先建立 TCP 连接(443 端口)
  2. 进行 TLS 握手,协商加密规则
  3. 在加密通道内收发 HTTP 请求/响应

公式:HTTPS = HTTP + TLS


2.4 TLS 版本演进

版本状态说明
TLS 1.0 / 1.1❌ 已淘汰存在安全缺陷,现代浏览器/服务器默认禁用
TLS 1.2✅ 主流版本目前广泛使用,兼容性强,绝大多数网站在用
TLS 1.3🚀 最新最强握手流程简化,延迟更低,安全性最强(百度、淘宝已部署)

2.5 TLS 握手流程(简化版)

目标:在不安全的网络中,安全地协商出一个会话密钥,后续用它加密通信

步骤:

  1. 客户端 → 服务器
    发送:我支持的 TLS 版本、加密算法列表、随机数 A

  2. 服务器 → 客户端
    返回:选定的 TLS 版本和加密算法、数字证书、随机数 B

  3. 客户端验证证书
    检查证书是否由受信任的 CA 签发,确认网站身份真实

  4. 协商会话密钥
    客户端生成随机数 C(预主密钥),用服务器公钥加密后发送
    双方各自用 A + B + C 计算出相同的会话密钥

  5. 加密通信
    后续所有 HTTP 数据,用会话密钥进行对称加密传输

  6. 会话结束
    断开连接,销毁会话密钥

💡巧妙之处:结合了非对称加密(安全传输密钥)和对称加密(高速传输数据)的优点


2.6 通俗类比

协议类比
HTTP在大街上大声喊话聊天,路人都能听见内容
TLS/SSL两人戴上加密对讲机通话,外人听不懂,且确认对方不是冒充的

2.7 相关核心概念

① 数字证书(CA 证书)

  • 网站的"网络身份证"
  • 由权威机构(如 DigiCert、Let’s Encrypt)颁发
  • 包含:网站域名、公钥、证书有效期、CA 签名
  • 是 TLS 身份认证的核心

② 端口号

  • HTTP 默认端口:80
  • HTTPS 默认端口:443

③ SSL 卸载

  • 使用专用硬件负责 TLS 加解密,减轻 Web 服务器 CPU 压力
  • 常见于高并发网站的服务器架构

三、HTTPS 协议详解

3.1 什么是 HTTPS

HTTPS = HTTP + TLS/SSL

HTTPS 是 HTTP 的安全版本,在 TCP 和 HTTP 之间插入了 TLS/SSL 安全层:

客户端 ↔ [TCP] ↔ [TLS 加密] ↔ [HTTP] ↔ 服务器

3.2 HTTPS 设计目标

目标说明类比
数据保密性传输内容加密,第三方无法查看快递包裹密封,别人不知道里面装了什么
数据完整性及时发现被篡改的内容快递员虽不知道内容,但掉包后能立即发现
身份认证确保数据到达正确的目的地包裹必须送到指定收件人手中,不能送错

3.3 HTTP 与 HTTPS 的区别

对比项HTTPHTTPS
安全性明文传输,易被窃听加密传输,安全性高
端口80443
证书不需要需要向 CA 申请证书(免费或付费)
连接状态无状态基于 SSL/TLS 的有状态加密连接
速度稍慢(增加了 TLS 握手和加解密过程)
SEO 排名正常搜索引擎优先收录 HTTPS 网站

3.4 HTTPS 双向身份认证流程

目标:确保客户端和服务器双方身份都真实可靠

步骤:

  1. 客户端 → 服务器
    发起 SSL 握手消息,请求建立连接

  2. 服务器 → 客户端
    发送服务器证书(包含服务器公钥)

  3. 客户端验证服务器证书

    • 检查证书是否由受信任的 CA 签发(操作系统内置 CA 根证书列表)
    • 检查证书是否过期、域名是否匹配
    • ❌ 如果验证失败,浏览器会显示安全警告,由用户决定是否继续
    • ✅ 验证通过,客户端认可服务器身份
  4. 服务器 → 客户端
    要求客户端发送证书(仅在需要客户端认证的场景,如企业内网、银行系统)

  5. 服务器验证客户端证书
    验证失败则关闭连接;成功则从证书中获取客户端公钥

  6. 双向认证完成
    双方确认彼此身份真实,开始协商会话密钥

📌注意:日常浏览网页通常只验证服务器身份,客户端认证仅在高安全场景使用。


3.5 HTTPS 数据传输加密

协商加密算法:

客户端发送:我支持的加密算法列表

  • 非对称加密(密钥交换):RSA、ECDHE
  • 数据签名摘要:SHA-256、SHA-384
  • 对称加密(数据传输):AES-128、AES-256、ChaCha20
  • 密钥长度:128 位、256 位

服务器选择:安全性最高的算法组合,返回给客户端

密钥交换:

  1. 客户端生成随机字符串(预主密钥)
  2. 用服务器公钥加密后发送
  3. 服务器用私钥解密得到预主密钥
  4. 双方各自计算出会话密钥
  5. 后续所有数据用会话密钥进行对称加密传输

💡巧妙设计:用非对称加密安全传输密钥,用对称加密快速传输数据——兼顾安全性和性能。


3.6 防止重放攻击

重放攻击:攻击者嗅探整个登录过程,获取加密的登录数据包后,不解密直接重传,尝试冒充用户登录。

防护机制:

  • SSL 使用序列号保护每个数据包
  • 每次 SSL 握手都有唯一随机数标记
  • 服务器会检测重复的序列号,拒绝重放的数据包

四、HTTPS 的优缺点分析

4.1 HTTPS 的优点

优点说明
身份认证确保数据发送到正确的服务器,防止钓鱼网站
数据加密防止数据在传输过程中被窃取、查看
数据完整性防止数据被中途篡改,确保接收内容完整
提升信任度浏览器地址栏显示锁标志,用户更信任
SEO 优势搜索引擎(如 Google)优先收录 HTTPS 网站
合规要求金融、医疗、电商等行业强制要求使用 HTTPS

4.2 HTTPS 的缺点

缺点说明影响
握手延迟TLS 握手需要 2-3 次往返,增加页面加载时间首次访问延迟约 200-300ms
计算开销加解密消耗 CPU 资源,服务器负载增加需要更强的服务器配置
缓存效率低HTTPS 缓存机制不如 HTTP 高效CDN 成本增加
证书成本商业证书需要付费(免费证书如 Let’s Encrypt 功能有限)年费从几百到数万元不等
IP 绑定限制传统 SSL 证书需要绑定独立 IP(SNI 技术已解决)IPv4 地址资源紧张
安全范围有限无法防御 DDoS 攻击、服务器入侵、SQL 注入等需要配合其他安全措施
信任链风险如果 CA 被控制或证书被伪造,仍可能遭受中间人攻击某些国家可控制本地 CA

4.3 HTTPS 的局限性

HTTPS 不能防御:

  • DDoS 攻击(分布式拒绝服务)
  • 服务器漏洞(SQL 注入、XSS、CSRF)
  • 客户端恶意软件(木马、键盘记录器)
  • 社会工程学攻击(钓鱼邮件、诈骗电话)

💡正确认识:HTTPS 主要保护传输层安全,但不能解决应用层代码漏洞、服务器配置错误、用户安全意识薄弱等问题。


五、总结对比

项目HTTPHTTPS
定义超文本传输协议HTTP + TLS/SSL 加密层
端口80443
安全性明文传输,易被窃听加密传输,安全性高
速度稍慢(TLS 握手 + 加解密)
证书不需要需要 CA 证书
成本较高(证书费用 + 服务器开销)
SEO正常搜索引擎优先收录
适用场景静态网页、公开信息登录、支付、隐私数据传输

六、建议

网站开发者:

  1. 强制使用 HTTPS:所有涉及用户登录、支付、隐私数据的网站必须启用 HTTPS
  2. 选择 TLS 1.2+:禁用 TLS 1.0/1.1,优先支持 TLS 1.3
  3. 免费证书方案:中小网站可使用 Let’s Encrypt 免费证书
  4. HTTP 自动跳转:配置 301 重定向,将 HTTP 流量强制跳转到 HTTPS
  5. 启用 HSTS:HTTP Strict Transport Security,强制浏览器只能通过 HTTPS 访问

安全测试人员:

  1. 🔍检查证书有效性:证书是否过期、域名是否匹配、是否由受信任 CA 签发
  2. 🔍测试 TLS 版本:是否禁用了 TLS 1.0/1.1,是否支持 TLS 1.3
  3. 🔍检测中间人攻击:使用工具(如 sslscan、testssl.sh)检测 SSL/TLS 配置漏洞
  4. 🔍抓包分析:使用 Wireshark 验证流量是否真正加密

普通用户:

  1. 🛡️识别 HTTPS 网站:地址栏有锁标志,网址以https://开头
  2. 🛡️警惕安全警告:浏览器提示"证书无效"时,不要继续访问
  3. 🛡️避免公共 Wi-Fi 输入密码:即使是 HTTPS,也可能遭受高级中间人攻击

七、进阶知识

7.1 HTTPS 性能优化技巧

  1. 启用 HTTP/2:多路复用,大幅提升 HTTPS 性能
  2. Session 复用:缓存 TLS 会话,减少重复握手
  3. OCSP Stapling:服务器预先获取证书状态,减少客户端查询时间
  4. 使用 CDN:让用户就近访问,减少 TLS 握手延迟

7.2 常见 SSL/TLS 漏洞

漏洞名称影响防护
HeartbleedOpenSSL 漏洞,泄露服务器内存数据升级 OpenSSL
POODLESSLv3 降级攻击禁用 SSLv3
BEAST针对 TLS 1.0 的攻击升级到 TLS 1.2+
CRIME/BREACH压缩攻击禁用 TLS 压缩

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询