深入理解 HTTP 与 HTTPS:区别以及 HTTPS 加密原理

目录

一、HTTP 与 HTTPS 的基本概念

二、HTTP 与 HTTPS 的核心区别

三、为什么需要 HTTPS?

四、HTTPS 的加密通信原理(核心)

1. 客户端发起 HTTPS 请求

2. 服务端返回 SSL/TLS 证书

3. 客户端验证证书

4. 客户端生成对称密钥并用公钥加密

5. 服务端用私钥解密获取对称密钥

6. 双方使用对称密钥加密通信

五、为什么 HTTPS 既用非对称又用对称加密?

六、总结:HTTP 与 HTTPS 的本质区别


一、HTTP 与 HTTPS 的基本概念

  • HTTP(HyperText Transfer Protocol)​​:超文本传输协议,是 Web 应用中最基础的通信协议,运行在 ​TCP 协议之上,默认端口 80。它以 ​明文方式传输数据,不提供任何加密或身份验证机制。
  • HTTPS(HTTP Secure)​​:在 HTTP 的基础上增加了 ​SSL/TLS 加密层,全称为 ​HTTP over TLS/SSL,运行在 ​TCP 协议之上,默认端口 443。它通过加密通信内容,解决了 HTTP 的安全缺陷。

二、HTTP 与 HTTPS 的核心区别

对比维度

HTTP

HTTPS

协议基础

应用层协议,明文传输

HTTP + SSL/TLS,加密传输

端口

80

443

安全性

不安全,数据容易被窃听、篡改

安全,支持加密、身份验证与数据完整性

数据传输

明文,容易被中间人攻击

加密传输,防止窃听与篡改

证书机制

需要 SSL/TLS 数字证书,通常由 CA 签发

SEO 与浏览器支持

逐渐被标记为“不安全”

被浏览器与搜索引擎优先推荐,有利于 SEO

适用场景

静态页面、内部系统等非敏感场景

登录、支付、用户数据传输等安全敏感场景

核心结论:​HTTPS 是 HTTP 的安全版本,解决了数据传输的安全性问题,是现代 Web 应用的标配。​


三、为什么需要 HTTPS?

在 HTTP 协议下,​浏览器与服务器之间的所有通信都是明文的,这意味着:

  1. 数据可被窃听​:中间人可以监听网络流量,获取用户名、密码、Cookie 等敏感信息。
  2. 数据可被篡改​:攻击者可以修改传输内容,比如将支付金额篡改,或将脚本注入页面。
  3. 身份无法验证​:用户无法确认当前访问的服务器是否为真正的服务提供者,存在被冒充的风险。

HTTPS 通过加密、身份验证与数据完整性校验,从根本上解决了上述问题。​


四、HTTPS 的加密通信原理(核心)

HTTPS 的安全性来源于 ​SSL/TLS 协议,其核心是:​使用非对称加密安全地传递一个对称密钥,之后使用对称加密保护通信内容。下面是 HTTPS 建立连接的主要流程:

1. 客户端发起 HTTPS 请求

用户通过浏览器访问 https://example.com,客户端向服务器发起 HTTPS 请求,默认使用 443 端口。


2. 服务端返回 SSL/TLS 证书

服务端收到请求后,返回自身的 ​SSL 数字证书,该证书包括:

  • 服务器公钥
  • 证书持有者信息(如域名)
  • 证书有效期
  • 由 ​CA(Certificate Authority,证书颁发机构)​​ 签发的数字签名

该证书用于证明“我是合法的服务端,不是中间人冒充的”。


3. 客户端验证证书

客户端接收到证书后,会进行如下验证:

  • 证书是否由受信任的 CA 签发
  • 证书是否过期
  • 证书上的域名是否与当前访问的域名一致
  • 证书签名是否合法

如果验证失败,浏览器会提示“连接不安全”或“证书无效”。


4. 客户端生成对称密钥并用公钥加密

验证通过后,客户端会生成一个随机的对称密钥(会话密钥)​,用于后续通信内容的加密。然后,客户端使用服务端证书中的 ​公钥加密该对称密钥,并将加密后的密钥发送给服务端。

为什么用公钥加密?因为只有服务端拥有对应的私钥,可以解开这个对称密钥,确保传输安全。


5. 服务端用私钥解密获取对称密钥

服务端收到加密的对称密钥后,使用自己的 ​私钥解密,得到客户端生成的对称密钥。

至此,客户端和服务端都持有了相同的对称密钥,且该密钥是通过安全方式传递的。


6. 双方使用对称密钥加密通信

接下来,客户端与服务端之间的所有数据传输(如 HTTP 请求与响应),都使用这个 ​对称密钥进行加密与解密。由于对称加密效率高,适合大数据量的加密传输。


五、为什么 HTTPS 既用非对称又用对称加密?

这是 HTTPS 设计的精华所在:

加密类型

用途

特点

为什么用在这里?

非对称加密(如 RSA)​

安全地传递对称密钥

安全性高,但速度慢

用来加密“对称密钥”,确保密钥传输不被窃取

对称加密(如 AES)​

加密实际通信内容

速度快,适合大数据量

双方使用同一个密钥加密数据,效率高

总结:​非对称加密用于安全地协商出一个密钥,对称加密用于高效地加密通信内容。​


六、总结:HTTP 与 HTTPS 的本质区别

项目

HTTP

HTTPS

传输方式

明文传输,不安全

加密传输,安全可靠

协议层

应用层协议

HTTP + SSL/TLS 协议

端口

80

443

证书

需要权威机构签发的 SSL 证书

适用场景

非敏感数据展示

登录、支付、用户信息等敏感操作

用户信任

浏览器提示“不安全”

浏览器显示安全锁,增强用户信任

HTTPS 已不再是“可选项”,而是“必选项”​。无论是从用户隐私、数据安全,还是从 SEO、浏览器兼容性、企业合规等角度考虑,部署 HTTPS 都是现代 Web 服务的基石。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95235.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零售行业的 AI 革命:从用户画像到智能供应链,如何让 “精准营销” 不再是口号?

AI 浪潮下的零售变革​在科技飞速发展的今天,人工智能(AI)正以前所未有的态势席卷全球,深刻地改变着各行各业的运营模式和发展轨迹,零售行业自然也难以置身事外。AI 技术凭借其强大的数据处理能力、精准的分析预测能力…

PyTorch 面试题及详细答案120题(96-105)-- 性能优化与调试

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。 前后端面试题-专栏总目录 文章目录 一、本文面试题目录 96. 如何查看PyTorch模型的…

Linux 孤儿进程 (Orphan Process)

🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录孤…

Linux Tun/Tap 多队列技术

🔥 Linux Tun/Tap 多队列技术 引用:Linux tun/tap 驱动多队列模式(C/C) 📖 引言 Tun/Tap 是 Linux 内核提供的虚拟网络设备,广泛应用于 VPN、虚拟化、网络隧道等领域。传统单队列模式在高吞吐量场景下存…

docker 启动一个clickhouse , docker 创建ck数据库

1. 拉镜像:docker pull clickhouse/clickhouse-server2. 创建容器并且启动命令:docker run -d --name clickhouse-server \-p 8123:8123 -p 9000:9000 \clickhouse/clickhouse-server3. 日志文件的映射,可以自己配置下,目前创建的…

合约服务架构-OOP 方式

文章目录前言🎯 经典的面向对象编程!1. 🏗️ **封装 (Encapsulation)**2. 🧬 **继承 (Inheritance)**3. 🎭 **多态 (Polymorphism)**4. 🎨 **抽象 (Abstraction)**🏛️ 设计模式的应用1. **工厂…

C# 生成器模式(一个投资跟踪程序)

一个投资跟踪程序 我们考虑一个稍微简单一点的例子,在这个例子中,用一个类构造一个用户界面。假设我 们要编写一个程序来跟踪投资的效益。我们有股票、债券和基金等投资项目,对每一种投资项 目都要显示持有量的列表,这样就能够选择…

【DBCExcelConvent】CAN报文解析辅助工具之DBC与Excel互转

前言 CAN总线翻译文件DBC是整车解析过程中非常核心的一部分,因此为了能被各大CAN工具解析,它也有自己的一套编码规则。但并不是无时无刻都有条件打开该文件,对于工程师而言。其实比较直观和通用的大多数还是Excel表格。因此,为了打…

如何将iPhone日历传输到电脑

iPhone日历是i设备上一个非常出色的内置应用程序,可以帮助你创建、查看和管理日程或事件。对于所有iPhone用户来说,在iPhone日历上添加新事件非常容易。然而,当涉及到将日历从iPhone传输到电脑时,许多人可能会感到困惑&#xff0c…

TDengine 3.3.7.0 新增性能基准工具 taosgen

taosgen 工具参考手册 taosgen 是时序数据领域产品的性能基准测试工具,支持数据生成、写入性能测试等功能。taosgen 以“作业”为基础单元,作业是由用户定义,用于完成特定任务的一组操作集合。每个作业包含一个或多个步骤,并可通…

模式组合应用-组合模式

写在前面Hello,我是易元,这篇文章是我学习设计模式时的笔记和心得体会。如果其中有错误,欢迎大家留言指正! 本文为设计模式间的组合使用,涉及代码较多,个人觉得熟能生巧,希望自己能从中学习到新…

在Ubuntu中安装配置MySql Server

1.安装MySql Server在命令行控制台执行安装命令:sudo apt install mysql-server安装完成后,因为没有root用户的密码,所以,登录不了mysql的cli。另外,MySql 8以上,lower-case-table-names默认值0&#xff0c…

Docker 40个自动化管理脚本-1 (20/40)

文章目录1. 自动化容器创建脚本2. 批量启动所有容器3. 批量停止运行中容器#!/bin/bash4. 批量删除停止的容器5. 运行容器并在退出后自动清理6. 自动重启关键容器7. 容器资源监控脚本8. 监控所有容器资源使用9. 检查所有容器日志10. 清理未使用资源脚本11. 删除悬空镜像12. 容器…

Go学习1:常量、变量的命名

golang 安装 | go-zero Documentation 在这个文档里,环境变量系统自动配好了(自定义的一样)不需要修改环境变量。 我下载的是1.25版本的。 目前使用go mod管理项目。 C的产出比太低,而Java和C#哲学又来源于C。 Go语言成功的项目…

2025_WSL2_Ubuntu20.04_C++20_concept 环境配置

需要使用 c20 新特性 concept 泛型约束 记录如何在 wsl2 里面配置环境,如果需要源工程,可以私发 背景:使用 CMakeLists.txt 配置整个工程 从官网 https://gcc.gnu.org/projects/cxx-status.html#cxx20 可以看到 concept 受 g10 支持这里注意虽…

Encoder编码器

Encoder编码器 #include <libavutil/log.h> #include <libavutil/opt.h> #include <libavcodec/avcodec.h>static int encode(AVCodecContext *ctx, AVFrame *frame, AVPacket *pkt, FILE *out){int ret -1;ret avcodec_send_frame(ctx, frame);if(ret <…

微服务-ruoyi-cloud部署

微服务 阿里 阿里nacos 注册中心&#xff0c;配置中心 spring cloud gateway网关 公共服务 阿里sentinel 面向分布式、多语言异构化服务架构的流量治理组件 阿里seata 是一款开源的分布式事务解决方案 nginx 静态资源服器 反向代理 ruoyi-cloud部署架构 VM配置 网…

Win7能看到Win10打印机但连接不上

解决方案&#xff1a;方法1.修改注册表&#xff08;适用于错误代码0x0000011b&#xff09;修改注册表&#xff08;关键步骤&#xff09;&#xff1a;许多情况下&#xff0c;这是由于Win10的一项隐私设置导致的1。在Win10电脑上&#xff0c;按 Win R&#xff0c;输入 regedit 并…

如何构建灵活、可控、可扩展的多云网络底座

在 AI 和数字化的浪潮中&#xff0c;越来越多的企业不再满足于单一云环境&#xff0c;而是同时使用 多家公有云、自建IDC、甚至边缘节点。这种多云模式虽然灵活&#xff0c;但也带来了一个新的挑战&#xff1a;如何让跨云、跨地的数据流动变得高效、安全、可控&#xff1f;答案…

幂等性设计艺术:在分布式重试风暴中构筑坚不可摧的防线

幂等性设计艺术&#xff1a;在分布式重试风暴中构筑坚不可摧的防线​​2023年某支付平台凌晨故障​​&#xff1a;由于网络抖动导致支付指令重复发送&#xff0c;系统在2分钟内处理了​​17万笔重复交易​​&#xff0c;引发​​4.2亿资金风险​​。事故根本原因&#xff1a;​…