HTTP 和 HTTPS 的区别

以下是 HTTP 与 HTTPS 的核心区别对比表:

对比维度 HTTP HTTPS
安全性 数据以明文传输,安全性低,容易被拦截和窃取 通过SSL/TLS加密传输,安全性高,防止数据被窃取或篡改
协议与端口 基于TCP/IP,默认端口为80 在HTTP基础上加入SSL/TLS层,默认端口为443
证书 不需要证书 需要由受信任的CA签发的SSL证书
性能 无加密开销,速度较快 加密过程增加少量延迟,但目前优化已减少性能影响
SEO与信任度 搜索引擎排名较低,浏览器标记为"不安全" 搜索引擎优先排名,浏览器标记为"安全"
应用场景 适用于不涉及敏感信息的网站(如新闻、博客) 适用于涉及敏感信息的网站(如电商、银行)

HTTP 和 HTTPS 模型图:

HTTP工作原理

  1. 客户端发送请求:如在浏览器输入URL 回车
  2. 服务端接收到请求根据请求的类型进行处理
  3. 处理结果包装成HTTP响应信息返回给客户端
  4. 客户端将返回的结果渲染到浏览器页面中

为什么要引入HTTPS?

HTTP数据以明文传输,安全性低,容易被拦截和窃取。容易导致中间人攻击。

情况1: 客户端与服务器之间通信,被窃听:

情况2: 篡改信息

情况3: 冒充服务端

SSL/TLS协议的作用

  • 通过非对称加密 + 对称加密,保证数据的隐匿性
  • 通过数字证书验证服务器的身份 , 防止中间人攻击

HTTPS的工作流程

  1. 客户端发送HTTPS请求,携带支持的算法列表
  2. 服务器将自己的公钥 + 数据证书发送给客户端
  3. 客户端检验证书的安全性,是否为证书安全机构颁发的
  4. 客户端生成一个随机的对称密钥 ,用服务器的公钥加密返回给服务端
  5. 服务端使用自己的私钥解密获取对称密钥
  6. 客户端与服务端使用对称密钥加密解密数据,进行数据传输

公钥与密钥

公钥:公开可分发给任何人,加密的数据只有匹配的私钥才能解密,用于验证数字签名确认数据的完整和来源

私钥:只有密钥拥有者才有的,解密由公钥加密的数据,用于生成数字签名(证明数据的完整性和来源)

HTTPS 加密算法

RSA密钥交换

RSA 是一种非对称加密算法,用于密钥交换和身份验证。在 TLS 握手过程中,RSA 主要用于加密预主密钥(Pre-Master Secret),确保只有服务器可以解密

  1. 客户端发送ClientHello - 支持的TLS版本、加密套件列表、客户端随机数(Client Random)
  2. 服务器响应ServerHello - 选择的TLS版本、加密套件、服务器随机数(Server Random)发送服务器证书(包含RSA公钥)
  3. 客户端生成预主密钥 - 客户端生成一个随机的预主密钥(Pre-Master Secret)使用服务器的RSA公钥加密预主密钥,发送给服务器
  4. 服务器解密预主密钥 - 服务器使用自己的RSA私钥解密预主密钥
  5. 生成主密钥 - 客户端和服务器使用预主密钥、Client Random 和 Server Random 生成主密钥(Master Secret)
  6. 对称加密通信 - 使用主密钥派生的会话密钥进行对称加密通信
ECDHE 密钥交换

ECDHE(Elliptic Curve Diffie-Hellman Ephemeral)是基于椭圆曲线的密钥交换算法每次握手都会生成临时的密钥对。

  1. 客户端发送ClientHello - 支持的TLS版本、加密套件列表、客户端随机数(Client Random)和 支持的椭圆曲线列表
  2. 选择椭圆曲线生成临时ECDHE公钥发送给客户端

:::info

主要就是这两步与RSA密钥不同,图画的挺清楚的了看图吧,这里弥补了RSA私钥一旦泄漏了就会泄密的风险。

因为这种算法每次握手都使用临时的密钥,即使泄漏也无所谓。

:::

相关推荐
poemyang4 小时前
从文本到二进制:HTTP/2不止于性能,更是对HTTP/1核心语义的传承与革新
网络协议·rpc·http2.0
java_t_t5 小时前
HTTP 接口调用工具类(OkHttp 版)
网络协议·http·okhttp
跨境小新13 小时前
手机移动代理IP:使用、配置、维护的10问10答
网络协议·tcp/ip·智能手机
墨雨听阁16 小时前
8.26网络编程——Modbus TCP
网络·网络协议·学习·tcp/ip
叶浩成52017 小时前
WebSocket实时通信系统——js技能提升
javascript·websocket·网络协议
百锦再17 小时前
WebSocket vs RabbitMQ:聊天室技术选型分析
websocket·网络协议·rabbitmq·消息·聊天室·messge
poemyang18 小时前
RPC的三大问题:跨语言、跨平台通信的终极解决方案是如何炼成的?
网络协议·rpc·序列化
砂糖橘加盐19 小时前
前端需要掌握的网络基础
前端·javascript·网络协议
一川月白70920 小时前
Linux应用软件编程---网络编程(TCP:[ 其他机制、头部标志位、应用示例 ]、 HTTP:[ 万维网、概念、格式、报文、应用示例 ]
linux·网络·tcp/ip·http·linux应用软件编程
愚润求学21 小时前
【Linux】Socket编程——TCP版
linux·运维·服务器·c++·网络协议·tcp/ip