目录

一、HTTPS是什么

加密是什么

二、HTTPS的工作过程

(一)对称加密

(二)非对称加密

(三)在非对称加密的基础上,引入证书校验

证书是什么

证书的内容

用证书解决中间人攻击

三、总结


一、HTTPS是什么

HTTPS 也是一个应用层协议.是在 HTTP 协议的基础上引入了一个加密层.
HTTP 协议内容都是按照文本的方式明文传输的.这就导致在传输过程中出现一些被篡改的情况.

臭名昭著的“运营商劫持”

当我们在浏览器中下载一个“天天动听”,正常情况下,会跳转出这个下载链接。

但是遇到运营商劫持的情况,下载链接就会变成QQ浏览器的链接。

当我们通过网络传输任何网络数据时,都会经过运营商的路由器/交换机,运营商作为中间人,就能解析出你传输的网络数据,并进行篡改。

点击"下载按钮",其实就是在给服务器发送了一个 HTTP 请求,获取到的 HTTP 响应其实就包含了该APP 的下载链接.运营商劫持之后,就发现这个请求是要下载天天动听,那么就自动的把交给用户的响应给篡改成 "QQ浏览器" 的下载地址了。

在互联网上,明文传输是一件很危险的事情,因此我们在HTTP的基础上进行加密得到了HTTPS。

加密是什么

  • 加密就是将明文(需要传输的数据)经过一系列操作,变成密文。
  • 解密就是将密文经过一系列操作,变成明文。

二、HTTPS的工作过程

HTTPS在HTTP的基础上对网络数据进行了加密。

加密方式有两种:对称加密和非对称加密

(一)对称加密

对称加密就是使用同一个密钥,把明文加密成密文发送出去,接收方再用这个密钥将密文解析成明文。

引入对称加密之后,即使数据被截获,由于黑客不知道密钥是啥,因此就无法进行解密,也就不知道请求的真实内容是啥了. 但事情没这么简单.服务器同一时刻其实是给很多客户端提供服务的.这么多客户端,每个人用的秘钥都必须是不同的(如果是相同那密钥就太容易扩散了,黑客就也能拿到了).因此服务器就需要维护每个客户端和每个密钥之间的关联关系,这也是个很麻烦的事情。

因此客户端与服务器建立连接的时候,就约定好密钥是什么。

但是在客户端与服务器约定密钥的时候,如果密钥用明文传输,那黑客也能读取到密钥并破解。

这样就形同虚设了,因此密钥也要加密传输,这就需要一个“密钥的密钥”,再这样下去,这样就死循环了。于是引入了非对称加密。

(二)非对称加密

非对称加密在对称加密的基础上多使用了两个密钥:公钥和私钥。

公钥和私钥是配对的.最大的缺点就是运算速度非常慢,比对称加密要慢很多.

  • 通过公钥对明文加密,变成密文
  • 通过私钥对密文解密,变成明文

也可以反着用

  • 通过私钥对明文加密,变成密文
  • 通过公钥对密文解密,变成明文

  • 在上述过程中,公钥的作用是用来封装对称密钥,相当于是把对称密钥给锁起来。
  • 私钥保存在服务器端,用来解开封装对称密钥的锁,从而得到对称密钥。

在这个过程中,黑客要得到私钥才能进行解密,只用服务器才有私钥,即使公钥被黑客知道了,也不能破解出密钥是什么。当密钥被安全告知给服务器,后续客户端和服务器之间的数据传输,就都靠对称密钥来加密了。

当前场景一共有三个密钥(也相当于三个步骤):

  • 客户端生成的对称密钥,用于对后续数据进行加密。
  • 服务器生成的公钥,用来对对称密钥进行加密传输,可以告知给所有设备使用。
  • 服务器持有的私钥,用来解密出对称密钥。

(三)在非对称加密的基础上,引入证书校验

在非对称加密的基础上,还是存在重大的隐患的。

我们知道公钥是由服务器生成的,再传输给客户端,问题是:

  • 服务器生成的公钥,是如何传输到客户端的呢?
  • 客户端在收到公钥的时候,怎么分辨这个公钥是不是黑客伪造的呢。

中间人攻击

在公钥传输给客户端的时候,黑客可以使用到中间人攻击,获取到对称密钥。

在中间人攻击的时候,黑客实现了一个“欺下瞒上”的效果。

这个漏洞关键点在于,客户端无法区分收到的公钥是否是被篡改过的,于是就引入校验机制,来验证收到的公钥。

证书是什么

服务端在使用HTTPS前,需要向CA机构申领一份数字证书,数字证书里含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就是公钥的载体

作用:

  • 安全传递公钥:证书里包含服务器公钥,借助 CA 机构的可信体系,能让公钥在传输到浏览器等客户端时,避免被中间人篡改、替换,就像给公钥 “保镖护送”,确保客户端拿到的是服务器真实、未被污染的公钥 。
  • 证明身份合法性:它是经 CA 认证的 “身份凭证”,向客户端证明 “我这个服务器是合法、可信的,不是假冒的” 。客户端会校验证书,若证书有问题(比如过期、被吊销、不是受信任 CA 签发),浏览器会警告,不让不安全连接建立,防止用户连到钓鱼网站 。

服务器在搭建的过程中,就可以向第三方公证机构申请证书,然后保存在服务器端。

证书的内容

证书中包含了:

  • 证书的颁布机构是谁
  • 证书的有效期是多久
  • 服务器的域名是什么
  • 服务器的公钥是什么⭐️
  • 证书的数字签名是多少(被加密的校验和)⭐️

其中证书的数字签名相当于身份证一样,用于校验证书的真伪,它是将证书里面的公钥和其他数据部分代入一个固定的公式(比如hash函数)算出来的一个数字,然后第三方机构也生成一对非对称密钥(pub2,pri2)然后用私钥pri2对校验和进行加密,数字签名本质上是一个被加密过的校验和。

用证书解决中间人攻击

解决中间人攻击就在于防止服务器生成的公钥被篡改。

过程是这样的:

  • 在客户端请求建立连接后,得到服务器发来的证书(公钥的载体)。
  • 客户端针对收到的证书进行解析,计算其中的校验和1。
  • 客户端使用认证机构的公钥pub2解析证书中的数字签名,得到校验和2.
  • 判断校验和1与校验和2是否相等。

原理:

原理在于,证书中的其他部分(包括公钥)相当于是计算过程,而数字签名是加密过的计算结果。

如果黑客写改了证书中的公钥,那就是计算过程出现错误,那么计算结果(校验和)肯定就错误。

而用户拿到公钥,就相当于有了参考答案,就能验证黑客是否对证书进行了修改。

那如果黑客连同公钥(过程)和数字签名(答案)一起改了呢,改了之后也必须对新的校验和进行加密(这里只能用黑客自己的私钥,拿不到认证机构的私钥),依旧会被判断出。

引入证书,是防止黑客修改公钥
黑客看到公钥是啥,无所谓(本身公钥就是公开的)
黑客看到校验和,无所谓,本身只是用来校验数据,没有啥别的意义

整个过程只是为了保证客户端可以验证,公钥是合法的
只要公钥的合法性验证通过,后续客户端继续使用公钥对对称密钥加密
后续继续使用对称密钥来进行加密传输

三、总结

HTTPS 工作过程中涉及到的密钥有三组.

  •         第一组(非对称加密): 用于校验证书是否被篡改.服务器持有私钥(私钥在注册证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些,同时持有对应的公钥).服务器使用这个私钥对证书的签名进行加密.客户端通过这个公钥解密获取到证书的签名,从而校验证书内容是否是篡改过.
  •         第二组(非对称加密): 用于协商生成对称加密的密钥.服务器生成这组私钥 - 公钥对,然后通过证书把公钥传递给客户端.然后客户端用这个公钥给生成的对称加密的密钥加密,传输给服务器,服务器通过私钥解密获取到对称加密密钥.
  •         第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密.

其实一切的关键都是围绕这个对称加密的密钥.其他的机制都是辅助这个密钥工作的.

第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器.
第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥.

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

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

相关文章

React 基础实战:从组件到案例全解析

React 基础实战专栏:从组件到案例全解析 本专栏围绕 React 核心概念(组件、Props、State、生命周期)展开,通过 6个实战案例+核心知识点拆解,帮你掌握 React 基础开发逻辑,每篇聚焦1个实战场景,搭配完整代码与原理讲解,适合 React 入门者巩固基础。 专栏目录 【组件传…

ARM芯片架构之CoreSight Channel Interface 介绍

CoreSight Channel Interface(通道接口)详解1. 概述 Channel Interface 是 ARM CoreSight 架构中用于在不同组件之间传递触发事件的专用接口。它是 Event Interface 的增强版本,支持多通道、双向通信,以及同步与异步两种时钟域连接…

Blender模拟结构光3D Scanner(二)投影仪内参数匹配

关于投影仪外参的设置可参见前一篇文章 Blender模拟结构光3D Scanner(一)外参数匹配-CSDN博客 使用Projectors插件模拟投影仪 Step 1 在Github下载插件(https://github.com/Ocupe/Projectors)。下载zip压缩包即可,无…

synchronized的作用

目录 一、核心作用 二、实现原理:基于"对象锁" 三、使用方式 四、锁的优化 五、优缺点 六、总结 synchronized 是 Java 中用于解决多线程并发安全问题的核心关键字,它的主要作用是实现线程间的同步,确保多个线程在访问共享资…

机试备考笔记 14/31

2025年8月14日 小结:(17号整理14号的笔记,这辈子真是有了w(゚Д゚)w)昨天摔了跤大的,今天好妈妈在家,松弛。省流:6道中等,明天只学了10分钟嘻嘻 目录LeetCode22…

dolphinscheduler中任务输出变量的问题出现ArrayIndexOutOfBoundsException

一段脚本任务如下:ret/data/dolphinscheduler/loadOraTable.sh "yonbip/yonbip10.16.10.69:1521/orcl" "select t.bondcontractno,t.olcunissuemny from yonbip.bond_contract t " "/dmp/biz" "bip" "2025-08-13"…

OpenCv(二)——边界填充、阈值处理

目录 一、边界填充(Border Padding) 1. 常见填充类型及效果 2.代码示例 (1)constant边界填充,填充指定宽度的像素 (2)REFLECT镜像边界填充 (3)REFLECT_101镜像边界…

Leetcode 15 java

今天复习一下翻转二叉树 226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:root [2…

嵌入式学习的第四十九天-时钟+EPIT+GPT定时器

一、时钟1.时钟系统基本概念(1)PLL (锁相环, Phase-Locked Loop)作用:PLL是一种反馈控制电路,用于生成稳定的高频时钟信号。它通过将输出时钟与参考时钟进行比较和调整,可以产生比输入参考时钟频率高得多的输出时钟。倍…

Python Sqlalchemy数据库连接

Python Sqlalchemy数据库连接一、连接数据二、模型三、ORM操作一、连接数据 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker# 1. 连接数据库 dbHost postgres://用户名:密码主机:端口/数据库名 engine create_engine(dbHost) # create_engi…

【Node.js】ECMAScript标准 以及 npm安装

目录 一、 ECMAScript标准 - 默认导出和导入 二、ECMAScript标准 - 命名导出和导入 三、包的概念 五、 npm - 安装所有依赖 六、 npm - 全局软件包 Node.js总结 总结不易~ 本章节对我有很大的收获, 希望对你也是!!! 本节素材…

NPM 、 NPX

NPM vs. NPX 简单来说,npm 是一个 node 包管理器,npx 是一个 Node 包执行器。 NPX 是一个 Node 包执行器,该 Node 包可以是本地也可以是远程的。允许开发者在无需安装的情况下执行任意 Node 包。npm 在安装nodejs 就自动带了 npm install -g …

守护品质安全,防伪溯源系统打造全链路信任体系

一、引言在当下这个信息透明、品质至上的时代,防伪溯源已经成为众多品牌保护自身利益、提升消费者信任度的重要手段。为了满足市场上对高效、可靠的防伪溯源查询系统的迫切需求,榕壹云精心打造了一款防伪溯源查询系统。二、项目背景随着商品市场的不断扩…

【完整源码+数据集+部署教程】无人机航拍视角洪水检测与受灾房屋识别图像分割救援指导系统源码和数据集:改进yolo11-DCNV2

背景意义 研究背景与意义 随着全球气候变化的加剧,极端天气事件的频率和强度不断上升,洪水作为一种常见的自然灾害,给人类社会带来了严重的威胁。洪水不仅导致人员伤亡和财产损失,还对基础设施和生态环境造成了深远的影响。因此&a…

C# 结构体与类的区别是什么?

结构体是值类型是储存在栈中独立储存的,数据与数据之间不会相互影响,即使将一个结构体赋值给另外一个结构体也不会相互影响。 类是一个模板,实例出来的对象是独立的不会相互影响,但是将一个对象赋值给另一个对象时 会把指向堆内存中数据的指针赋值给另一个对象.从而发生两个变量…

Redis GEO

Redis GEO 引言 Redis 是一款高性能的键值存储系统,广泛应用于缓存、消息队列等领域。Redis GEO 是 Redis 2.4 版本后新增的一个功能,用于存储地理位置信息。本文将详细介绍 Redis GEO 的概念、使用方法以及应用场景。 什么是 Redis GEO? Redis GEO 是 Redis 的一个模块…

Go从入门到精通系列学习路线规划

Go从入门到精通系列学习路线规划 目录导航 Go从入门到精通系列学习路线规划首页说明 第1篇_Go语言初探_环境搭建与HelloWorld 第2篇_Go语言基础语法_变量常量与数据类型 第3篇_Go语言控制结构_条件判断与循环 第4篇_Go语言函数详解 第5篇_Go语言数据结构详解 第6篇_Go语言结构体…

Grid系统概述

目录 概念及功能 网格对象(Grid Object) 和世界对象(World Object) 工作流程 概念及功能 TrinityCore 的 Grid 系统是一套复杂的地图分区管理机制,其核心目标是通过动态管控游戏世界的区域状态和对象生命周期&#…

一文搞懂LLM大模型!LLM从入门到精通万字长文(2024.12月最新)

LLM从入门到精通精品文章 目录 一、LLM基本概念 二、LLM发展历程 三、LLM大模型的分类 四、LLM主流大模型类别 五、LLM大模型建立的流程 六、Fine-Tuning 七、Prompt-Tuning 八、超大规模参数模型Prompt-Tuning方法 8.1上下文学习 In-Context Learning 8.2.指令学习 …

Next.js跟React关系(Next.js是基于React库的全栈框架)(文件系统路由、服务端渲染SSR、静态生成SSG、增量静态再生ISR、API路由)

文章目录**1. React 是基础,Next.js 是扩展****2. Next.js 解决了 React 的哪些痛点?****3. 核心区别****4. Next.js 的核心特性**1. **文件系统路由**2. **服务端渲染(SSR)**3. **静态生成(SSG)**4. **增量…