当前位置: 首页 > news >正文

【Java面试】Https和Http的区别?以及分别的原理是什么?

HTTP与HTTPS是互联网数据传输的两种核心协议,它们在安全性、工作原理和应用场景上存在显著差异。以下从核心区别工作原理两方面深入解析:


🔒 一、核心区别总结

特性HTTPHTTPS
安全性明文传输,数据易被窃听或篡改通过SSL/TLS加密传输,防止数据泄露和中间人攻击
端口号默认80端口默认443端口
证书要求无需证书需CA机构颁发的数字证书验证服务器身份
性能响应更快(无加密开销)因加密计算略慢,但现代硬件差距可忽略
协议层应用层协议,直接基于TCPHTTP + SSL/TLS安全层,再基于TCP
地址栏标识显示http://,浏览器提示"不安全"显示https://,带绿色锁图标

⚙️ 二、HTTP工作原理

HTTP(超文本传输协议)是无状态、无连接的请求-响应协议:

  1. 请求阶段
    • 客户端(如浏览器)发送HTTP请求,包含方法(GET/POST)、URL、头部信息(如User-Agent)。
    • 示例:GET /index.html HTTP/1.1
  2. 响应阶段
    • 服务器解析请求,返回状态码(如200 OK)和响应体(如HTML内容)。
  3. 连接关闭
    • 每次请求后TCP连接关闭(早期HTTP/1.0),HTTP/1.1后支持短时连接复用。

核心缺陷

  • 数据明文传输,易被中间人窃取或篡改(如密码、银行卡号)。
  • 无法验证服务器身份,可能访问钓鱼网站。

🔐 三、HTTPS工作原理

HTTPS = HTTP + SSL/TLS加密层,通过证书验证密钥交换对称加密三重机制保障安全:

  1. SSL/TLS握手阶段(关键)

    • 证书验证:服务器返回数字证书(含公钥、域名、CA签名)。浏览器验证证书有效性(是否过期、CA是否可信、域名匹配)
    • 密钥交换:客户端生成随机数(Pre-Master Secret),用服务器公钥加密后发送。服务器用私钥解密获取该随机数
    • 生成会话密钥:双方基于随机数生成对称会话密钥(如AES密钥),用于后续数据传输。
  2. 加密通信阶段

    • 使用会话密钥对HTTP数据进行对称加密传输,保证效率。
    • 通过MAC(消息认证码) 验证数据完整性,防止篡改

为何结合对称与非对称加密?

  • 非对称加密(如RSA)用于安全交换密钥(防窃听)。
  • 对称加密(如AES)用于高效加密大量数据。

🛡️ 四、HTTPS如何防止中间人攻击?

  1. 证书权威性
    • 中间人无法伪造CA签名的证书(私钥由CA保密),浏览器会警告非法证书
  2. 密钥保密性
    • 即使截获加密的随机数,中间人无服务器私钥无法解密,无法获取会话密钥
  3. 数据完整性校验
    • 每个数据包附带MAC值,篡改会导致校验失败。

⚠️ 注意:若用户主动安装抓包工具证书(如Fiddler),HTTPS仍可被解密,此时属于用户授信行为


💎 五、应用场景建议

  • HTTP:静态内容(如新闻页)、内网服务、性能敏感且无需加密的场景
  • HTTPS:登录/支付页面、API接口、用户隐私数据(如医疗记录)、SEO优化(谷歌优先收录HTTPS站点)

现代网站普遍转向HTTPS,Chrome等浏览器已将HTTP标记为“不安全”。安全性需求提升和免费证书(如Let’s Encrypt)的普及,加速了HTTPS的全面落地

http://www.lryc.cn/news/582345.html

相关文章:

  • 【应急响应】Linux 自用应急响应工具(LinuxCheckShoot)
  • 【力扣(LeetCode)】数据挖掘面试题0003: 356. 直线镜像
  • 明星AI自动化测试工具Midscene.js源码解析
  • Vidwall: 支持将 4K 视频设置为动态桌面壁纸,兼容 MP4 和 MOV 格式
  • 【保姆级图文详解】探秘 Prompt 工程:AI 交互的关键密码
  • 【Netty基础】Java原生网络编程
  • 熔断限流降级
  • [附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的高校实验室资源综合管理系统,推荐!
  • Spring @Conditional注解深度解析:从原理到最佳实践
  • 10.6 ChatGLM3私有数据微调实战:24小时打造高精度模型,显存直降60%
  • 【机器学习笔记 Ⅲ】4 特征选择
  • 【ARM AMBA AXI 入门 21 -- AXI partial 访问和 narrow 访问的区别】
  • 田间杂草分割实例
  • Qt的第一个程序(2)
  • JVM基础01(从入门到八股-黑马篇)
  • 微信小程序81~90
  • C++笔记之和的区别
  • 力扣 hot100 Day37
  • 回溯题解——子集【LeetCode】二进制枚举法
  • ubuntu18.04.1无法安装vscode(安装依赖无效)
  • qiankun 微前端框架子应用间通信方法详解
  • xbox one controller DSLogic 逻辑分析仪截包
  • 1.1_5_2 计算机网络的性能指标(下)
  • OpenWebUI(3)源码学习-后端models数据模型模块
  • LLVM,polly,最新测试
  • ServerAgent资源监控和nmon监控
  • 【Linux操作系统】简学深悟启示录:Linux基本指令
  • 串行接口:CAN总线
  • 2025年全国青少年信息素养大赛图形化(Scratch)编程小学低年级组初赛样题答案+解析
  • 华为OD机试 2025B卷 - 最长的指定瑕疵度的元音子串 (C++PythonJAVAJSC语言)