HTTP/HTTPS

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 做了什么(通俗版)

  1. TCP 三次握手 → 建立连接
  2. TLS 握手:协商加密套件、校验证书、生成会话密钥
  3. 加密通信:后续 HTTP 报文都用会话密钥加解密
  4. 防窃听(别人看不懂)、防篡改(改了能发现)、防冒充(证书造假会被拦)

四、证书与信任链

  • 服务器需部署 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 免费证书或云厂商托管证书
上一篇
下一篇