HTTP 和 HTTPS 详解(原理 + 区别 + 面试重点)

一、HTTP 是什么

  1. 定义

    HTTP(HyperText Transfer Protocol)是超文本传输协议,用于浏览器和服务器之间的数据通信。

  2. 特点

    (1)无状态:每次请求互不关联

    (2)明文传输:数据不加密

    (3)基于 TCP 协议

  3. 工作流程

客户端发送请求,服务器返回响应,例如:

GET /index.html HTTP/1.1

Host: example.com


二、HTTP 的问题

  1. 数据是明文

    传输过程中可以被直接读取,例如账号密码

  2. 数据容易被篡改

    中间人可以修改请求或响应内容

  3. 无法验证身份

    客户端无法确认服务器是否真实


三、HTTPS 是什么

  1. 定义

    HTTPS 是在 HTTP 基础上加入 SSL/TLS 加密层的安全协议

  2. 本质

    HTTPS = HTTP + 加密 + 认证 + 完整性校验


四、HTTPS 的核心原理

  1. 加密机制

(1)对称加密

使用同一个密钥加密和解密,速度快,但密钥传输不安全

(2)非对称加密

使用公钥和私钥,公钥加密,私钥解密,解决密钥传输问题

(3)混合加密(重点)

HTTPS 实际采用混合加密

握手阶段使用非对称加密

数据传输阶段使用对称加密


  1. 身份认证

通过数字证书验证服务器身份

证书由 CA(证书颁发机构)签发


  1. 完整性校验

使用摘要算法(如 SHA)确保数据未被篡改


五、HTTPS 握手流程(重点)

  1. 客户端发起 HTTPS 请求

  2. 服务器返回数字证书(包含公钥)

  3. 客户端验证证书是否合法

  4. 客户端生成随机密钥

  5. 使用公钥加密该密钥并发送给服务器

  6. 服务器用私钥解密得到密钥

  7. 双方使用该密钥进行对称加密通信

一句话总结:先用非对称加密交换密钥,再用对称加密传输数据


六、HTTP 和 HTTPS 的区别

  1. 安全性

    HTTP 不安全,HTTPS 安全

  2. 是否加密

    HTTP 明文传输,HTTPS 加密传输

  3. 端口

    HTTP 使用 80 端口,HTTPS 使用 443 端口

  4. 性能

    HTTP 稍快,HTTPS 略慢(实际差异很小)

  5. 证书

    HTTP 不需要证书,HTTPS 需要证书

  6. SEO

    HTTPS 更有利于搜索排名


七、HTTPS 的优缺点

  1. 优点

(1)数据加密,防止窃听

(2)验证服务器身份

(3)防止数据篡改

(4)提升网站可信度

  1. 缺点

(1)需要申请证书

(2)握手过程略有性能开销

(3)部署比 HTTP 更复杂


八、HTTP/2 与 HTTPS

  1. HTTP/2 特点

(1)多路复用

(2)头部压缩

(3)服务器推送

  1. 关系

主流浏览器中 HTTP/2 基本都运行在 HTTPS 上


九、常见安全问题

  1. 中间人攻击

    攻击者拦截通信并伪造服务器

HTTPS 通过证书和加密进行防护

  1. 抓包攻击

    HTTP 可以直接看到数据

    HTTPS 数据是加密的

  2. DNS 劫持

    需要结合 HSTS 等机制防护


十、开发中的最佳实践

  1. 全站使用 HTTPS

  2. 配置 HSTS 强制使用 HTTPS

Strict-Transport-Security: max-age=31536000

  1. 禁用不安全协议

    如 SSL 3.0

  2. Cookie 设置安全属性

Secure 和 HttpOnly

  1. 配合认证机制

    HTTPS 不能替代登录认证(如 Token、Session)


十一、面试高频问题

  1. HTTP 和 HTTPS 的核心区别

    是否加密,是否安全,是否需要证书

  2. HTTPS 为什么安全

    因为使用混合加密、数字证书和完整性校验

  3. HTTPS 握手过程

    重点记住七个步骤

  4. 为什么不用全程非对称加密

    因为性能太低

  5. HTTPS 一定安全吗

    不一定,例如用户忽略证书警告或终端被攻击


十二、总结

  1. HTTP 是明文传输协议,不安全

  2. HTTPS 在 HTTP 基础上增加了加密和认证机制

  3. HTTPS 通过混合加密解决了安全与性能问题

  4. 在现代开发中,应优先使用 HTTP。

相关推荐
灰子学技术10 分钟前
Envoy HTTP 过滤器处理技术文档
网络·网络协议·http
ja哇1 小时前
大厂面试高频八股
java·面试·职场和发展
空中海3 小时前
Spring Cloud 专家级面试题库
spring·spring cloud·面试
weixin_426184973 小时前
系统设计面试009:设计 Facebook 新闻动态(News Feed)
面试
拾贰_C3 小时前
【OpenClaw | openai | QQ】 配置QQ qot机器人
运维·人工智能·ubuntu·面试·prompt
空中海3 小时前
Spring Boot 专家级面试题库
spring boot·后端·面试
时空自由民.4 小时前
HTTP协议和HTTPS协议结合天气获取案例介绍
网络协议·http·https
AI人工智能+电脑小能手7 小时前
【大白话说Java面试题】【Java基础篇】第20题:HashMap在计算index的时候,为什么要对数组长度做减1操作
java·开发语言·数据结构·后端·面试·哈希算法·hash-index
逻辑驱动的ken7 小时前
Java高频面试考点场景题17
开发语言·jvm·面试·求职招聘·春招
Fuly10247 小时前
java面试知识点复习
java·开发语言·面试