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

HTTPS单双向认证流程详解与联想

HTTPS单向认证

HTTPS在单向认证传输的过程中会涉及到三个密钥:

服务端的公钥和私钥,用来进行非对称加密交换密钥

客户端生成的随机密钥,用来进行对称加密传输数据

认证过程

1.客户端向服务器发起HTTPS请求,连接到服务器的443端口

2.服务器将自己的CA证书发送给客户端,证书中包含如下信息:

公钥(密钥对中的公钥发送给客户端,而私钥只有服务端知道)

持有者信息

证书认证机构(CA)的信息

CA 对这份文件的数字签名及使用的算法

证书有效期

还有一些其他额外信息

3.客户端收到服务器端的CA证书之后,会对证书进行检查,验证其合法性(注①),如果证书合法,客户端随机产生一个密钥,然后用证书中的公钥加密这个随机密钥,发送给服务端(这里交换密钥的过程,是使用公私钥对进行非对称加密传输

4.服务器接收到客户端发来的加密密钥后,用自己的私钥进行非对称解密获得客户端密钥,然后用客户端密钥对数据进行对称加密进行传输

5.客户端收到服务端发送来的加密数据,用客户端密钥对其进行对称解密,得到服务器发送的数据,整个HTTPS传输完成(交换密钥之后的传输过程为对称加密传输

借网上的图:

HTTPS双向认证

HTTPS在单向认证传输的过程中会涉及到三个密钥:

服务端的公钥和私钥,用来进行非对称加密交换密钥

客户端的公钥和私钥,用来进行非对称加密协商加密方式

客户端生成的随机密钥,用来进行对称加密传输数据

认证过程

1.客户端向服务器发起HTTPS请求,连接到服务器的443端口

2.服务器将自己的CA证书发送给客户端,证书中包含信息与单项认证一致

3.客户端验证CA证书合法性,获得服务端公钥

4.客户端将自己的客户端证书发送给服务端,证书中包含客户端公钥

5.服务端接收到客户端证书,获得客户端公钥

6.客户端发送自己支持的对称加密方案给服务端,让服务端从中选择

7.服务端选择一个加密方案后,将该加密方案使用客户端公钥加密后返回给客户端

8.客户端接收到加密后的加密方案后,使用客户端私钥解密,获得服务端选择的加密方案

9.客户端用服务端公钥加密客户端随机产生的一个密钥,发送给服务端

10.服务端接收后,使用服务端私钥解密加密后的密钥,协商交换完成

11.双方使用客户端产生的密钥进行数据加密传输(对称加密

借网上的图:

双向认证和单项认证的区别

双向认证中的以下几步:

4.客户端将自己的客户端证书发送给服务端,证书中包含客户端公钥

5.服务端接收到客户端证书,获得客户端公钥

6.客户端发送自己支持的对称加密方案给服务端,让服务端从中选择

7.服务端选择一个加密方案后,将该加密方案使用客户端公钥加密后返回给客户端

8.客户端接收到加密后的加密方案后,使用客户端私钥解密,获得服务端选择的加密方案

这一部分是服务端验证客户端证书,使用客户端公钥加密选择的加密方案发送给客户端,这一过程和单项认证的流程一样,保证了所选择的加密方案是只能被客户端解开的,这一过程是协商加密方案的过程,其他认证过程与单向认证一致。

关于客户端验证服务端CA证书合法性

CA 机构

为了让服务端的公钥被大家信任,就产生了这样一种机构,Certificate Authority——证书认证机构,CA机构必须是具有极高可信度的,以保证签发的证书也是可信的

客户端验证CA证书合法性

客户端的证书管理目录中,会存在一些操作系统默认的受信任的根证书颁发机构,例如下图中这些:

客户端也可以自己添加一些机构进去,(例如使用BurpSuite进行抓包,就需要自己添加PortSwigger CA为受信任的跟证书颁发机构

这样在服务端向客户端返回证书之后,客户端可以根据服务端证书是否由受信任的根证书颁发机构颁发的证书来验证CA证书是否合法。

但并不是所有的证书都是由根证书颁发机构来颁发的,相反大多数证书是层级颁发的,其中验证流程是层级验证是否可信,以我个人博客的证书来举例:

证书颁发者是R3,但是我的证书管理目录中并没有这个机构,那么客户端会向上一层验证R3这个中间证书的颁发机构是否可信。

R3的颁发机构为ISRG Root X1,此时客户端在受信任的根证书颁发机构中可以找到这个机构,那么就可以认证此证书为可信证书。

以上就是客户端验证服务端CA证书是否可信的大致流程,相应的,当我设置浏览器上级代理为BurpSuite时,那么客户端(浏览器)认为BurpSuite就是服务端,认证的证书就会变成。

image-20220308135004883

而我已经将PortSwigger CA添加至我的受信任的根证书颁发机构目录中,所以浏览器也会认为证书是可信的,这也是为什么使用Burp抓包前需要先配置添加证书,然后BurpSuite再伪装成客户端与真正的服务端进行通讯,再将接收到的数据返回给真正的客户端,从而起到了代理的作用。

APP的HTTPS双向认证防止抓包

在app抓包中,使用了https双向认证的app,在验证服务端时,Burp可以伪造成服务端与app进行通讯,但是在Burp伪造成客户端时,服务端要求客户端提供客户端自己的CA证书,但是此时BurpSuite伪造的客户端CA证书服务端是不认的,因为app将证书内置在了app内部作为客户端证书,所以可以通过逆向app程序获得CA证书,再将app中的CA证书导入到Burp中即可来突破https双向认证防止抓包的限制

image-20220308140706188

总结

理解HTTPS协议的认证流程,可以增加对安全的理解,HTTPS认证的过程,核心思想与Kerberos协议的认证也是互通的,是具有相似性的。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

大厂面试题

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

相关文章:

HTTPS单双向认证流程详解与联想

HTTPS单向认证 HTTPS在单向认证传输的过程中会涉及到三个密钥: 服务端的公钥和私钥,用来进行非对称加密交换密钥 客户端生成的随机密钥,用来进行对称加密传输数据 认证过程 1.客户端向服务器发起HTTPS请求,连接到服务器的443端…...

防止浏览器缓存了静态的配置等文件(例如外部的config.js 等文件)

防止浏览器缓存了静态的配置文件 前言1、在script引入的时候添加随机数1.1、引入js文件1.2、引入css文件 2、通过html文件的<meta>设置防止缓存3、使用HTTP响应头&#xff1a; 前言 在实际开发中浏览器的缓存问题一直是一个很让人头疼的问题&#xff0c;尤其是我们打包时…...

【Umi】umi-max 中使用 Dva

前置介绍 Umi 是一个基于 React 的可插拔企业级前端应用框架&#xff0c;Umi 提供了一系列的插件和约定&#xff0c;使得开发者能够以约定大于配置的方式进行开发&#xff0c;同时还支持丰富的功能扩展和插件机制。 Dva 是一个基于 Redux、Redux-Saga 和 React-Router 的数据…...

Inno Setup 深入浅出-文件的显示

【1】在需要打包的文件中&#xff0c;新建一个文本文件&#xff0c;如License.txt 注意&#xff1a;中文的编码格式需要GB2312&#xff0c;否则显示乱码 【2】读取、显示文本 [Code] procedure Init_ShowLicense(); var tmpFont:TFont; begin editLicense : TMemo.C…...

数据链路层协议——以太网协议

目录 一、认识以太网 二、以太网帧格式 三、MTU 四、ARP协议 ARP协议 ARP协议格式 ARP缓存表 一、认识以太网 前面&#xff0c;我们讲到了网络层的IP协议&#xff0c;它通过目的IP&#xff0c;子网划分&#xff0c;路由表查找及其算法等方式让IP报文能够从一个主机到另一…...

一篇讲透数据结构之链式队列

目录 一.队列的定义 二.队列的分类 三.队列的功能 四.链式队列的声明 五.链式队列功能的实现 5.1 初始化队列 5.2 判断队列是否为空 5.3 获取队头元素 5.4 获取队尾元素 5.5获取队列长度 5.6 入队 5.7出队 5.8 打印队列元素 5.9 销毁队列 一.队列的定义 队列&…...

【408真题】2009-24

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…...

6年IT找工作想法

由于我学历比较低&#xff0c;当时没好好学&#xff0c;后面参加了大数据培训&#xff0c;现在也已经有6年了。 我是计算机专业的&#xff0c;我的培训同学有些不是计算机的&#xff0c;但是是本科&#xff0c;双非一本的这种&#xff0c;在6年后和我的差距不是一点点了&#x…...

TOPSIS综合评价

TOPSIS法&#xff08;Technique for Order Preference by Similarity to an Ideal Solution&#xff09;是一种常用的综合评价方法&#xff0c;该方法根据有限个评价对象与理想化目标的接近程度进行排序&#xff0c;是在现有的对象中进行相对优劣的评价。 TOPSIS法的原理是通过…...

修改vuetify3的开关组件v-switch在inset模式下的大小

<v-switchv-model"model":label"Switch: ${model.toString()}"hide-detailsinset></v-switch>使用方式1&#xff1a;本页面使用 本页面中使用&#xff0c;必须要含有lang“scss” scoped&#xff0c;才会生效 <style lang"scss"…...

m1系列芯片aarch64架构使用docker-compose安装nacos

之前看到 DockerHub 上发布了 m1 芯片 aarch64 架构的 nacos 镜像, 所以就尝试的安装了下, 亲测可用: 一. docker-compose.yml 编写 请确保自己的 mysql 服务已经启动了, 并且允许远程连接 volumes 挂载目录需要换成自己的目录 二. 容器运行和网络组 2.1 查看容器运行情况 …...

优化耗时业务:异步线程在微服务中的应用

大家好&#xff0c;我是程序员大猩猩。 大家都知道&#xff0c;在我们实际开发过程中&#xff0c;我们经常会遇到一些耗时的业务和逻辑&#xff0c;比如说要上传什么大文件&#xff0c;又或者是大文件的数据处理。我们不能一个接口上等着这些耗时任务完成之后了&#xff0c;再…...

torch.scatter看图理解

torch.Tensor.scatter 有 4 个参数&#xff1a; scatter(dim, index, src, reduceNone) 先忽略 Reduce&#xff0c;最后再解释。先从最简单的开始。我们有一个 (2,4) 形状的张量&#xff0c;里面填充了 1&#xff1a; 粉红色的符号表示张量结构 并且我们传入相应的参数并得到…...

适合学生党的蓝牙耳机有哪些?盘点四大性价比蓝牙耳机品牌

对于追求高品质音乐体验而又预算有限的学生党来说&#xff0c;一款性价比高的蓝牙耳机无疑是最佳选择&#xff0c;在众多品牌和型号中&#xff0c;如何挑选到既适合自己需求又价格亲民的蓝牙耳机&#xff0c;确实是一个值得思考的问题&#xff0c;作为一个蓝牙耳机大户&#xf…...

【ORB_SLAM系列3】—— 如何在Ubuntu18.04中使用自己的单目摄像头运行ORB_SLAM3(亲测有效,踩坑记录)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ORB_SLAM3源码编译二、ORB_SLAM3实时单目相机测试1. 查看摄像头的话题2. 运行测试 三. 运行测试可能的报错1. 报错一(1) 问题描述(2) 原因分析(3) 解决 2. …...

Science Advances|柔性超韧半导体纤维的大规模制备(柔性半导体器件/可穿戴电子/纤维器件/柔性电子)

北京大学 雷霆(Ting Lei)团队,在《Science Advances》上发布了一篇题为“Continuous production of ultratough semiconducting polymer fibers with high electronic performance”的论文。论文内容如下: 一、 摘要 共轭聚合物具有良好的光电特性,但其脆性和机械特性差,…...

VirtualBox虚拟机与bhyve虚拟机冲突问题解决@FreeBSD

问题 在安装完bhyve虚拟系统的主机上启动VirtualBox虚拟机的时候&#xff0c;报错&#xff1a;不能为虚拟电脑 debian 打开一个新任务. VirtualBox cant operate in VMX root mode. Please close all other virtualization programs. (VERR_VMX_IN_VMX_ROOT_MODE). 返回 代码…...

【网络层】ICMP 因特网控制协议

文章目录 ICMP 含义以及作用ICMP协议解析结合ICMP协议和ping常见问题 ICMP 含义以及作用 ICMP&#xff1a;Internet control massage protocol 因特网控制协议 Internet控制报文协议ICMP是网络层的一个重要协议。 ICMP协议用来在网络设备间传递各种差错和控制信息&#xff0c;…...

汇编原理(四)[BX]和loop指令

loop&#xff1a;循环 误区&#xff1a;在编译器里写代码和在debug里写代码是不一样的&#xff0c;此时&#xff0c;对于编译器来说&#xff0c;就需要用到[bx] [bx]: [bx]同样表示一个内存单元&#xff0c;他的偏移地址在bx中&#xff0c;比如下面的指令 move bx, 0 move ax,…...

Linux查看设备信息命令

dmidecode | grep Product Name 查看grub版本号&#xff1a;rpm -qa | grep -i "grub" 客户端操作系统版本&#xff1a; cat /etc/issue cat /etc/redhat-release 处理器品牌及型号&#xff1a; less /proc/cpuinfo |grep model...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...