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

news2024/11/18 5:29:46

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大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

特别声明:

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

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

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

相关文章

JS-06 原型式继承借用构造函数实现继承

目录 1 原型式继承 场景 前置问题 实现方法 2 借用构造函数实现继承 前置问题 错误的实现方式 正确的实现方式 1 原型式继承 场景 a、创建一个纯洁的对象:对象在控制台打印什么属性都没有 b、创建一个继承自某个父对象的子对象 前置问题 一个对象里有很…

基于Vue uni-app的自定义列表表格信息展示组件

摘要:随着软件技术的不断发展,前端开发面临着越来越多的挑战。特别是在业务场景复杂多变的情况下,如何提高开发效率和降低维护成本成为了关键。本文旨在探讨组件化开发在前端应用中的重要性,并以Vue uni-app自定义列表表格为例&am…

韶音、南卡、Oladance开放式耳机哪个好?深度测评告诉你答案!

作为一名资深数码博主,五年来我有幸试用了众多蓝牙耳机,涵盖了市场上的大小品牌。品牌方常邀请我进行产品评测,而我的粉丝也常在私信中求教如何挑选开放式蓝牙耳机。近期,我细致比对了市面上备受关注的三款开放式耳机:…

Linux中常见的基本指令(上)

目录 一、ls指令 1. ls 2. ls -l 3. ls -a 4.ls -F 二、qwd指令 三、cd指令 1. cd .. 2. cd / / / 3. cd ../ / / 4. cd ~ 5. cd - 五、mkdir指令 六、rmdir指令和rm指令 一、ls指令 语法 : ls [ 选项 ][ 目录或文件 ] 。 功能 :对于目录…

Python词法和语法分析工具库之ply使用详解

概要 在编程语言的开发、编译器的实现和数据解析等领域,词法分析和语法分析是关键的技术。Python的ply库是一个功能强大的词法和语法分析工具,基于经典的Lex和Yacc工具实现。ply库为开发者提供了一种简单且高效的方法,用于定义词法规则和语法规则,从而实现对自定义语言和数…

HNU-计算机体系结构-实验2-Tomasulo算法

计算机体系结构 实验2 计科210X 甘晴void 202108010XXX 1 实验目的 熟悉Tomasulo模拟器同时加深对Tomasulo算法的理解,从而理解指令级并行的一种方式-动态指令调度。 掌握Tomasulo算法在指令流出、执行、写结果各阶段对浮点操作指令以及load和store指令进行什么…

自动控制: 最小二乘估计(LSE)、加权最小二乘估计(WLS)和线性最小方差估计

自动控制: 最小二乘估计(LSE)、加权最小二乘估计(WLS)和线性最小方差估计 在数据分析和机器学习中,参数估计是一个关键步骤。最小二乘估计(LSE)、加权最小二乘估计(WLS&…

Linux eBPF:网络、系统监控和安全领域的创新

扩展 Berkeley Packet Filter(eBPF)是Linux内核中的一项强大技术,最初用于网络数据包过滤。随着时间的推移,eBPF的功能和应用场景不断扩展,如今已成为网络、系统监控和安全等领域的重要工具。eBPF可以在Linux内核中安全…

积鼎CFDPro水文水动力模型,专为中小流域洪水“四预”研发的流体仿真技术

水动力模型与水文模型是水利工程与水文学研究中不可或缺的两大工具。水动力模型着重于流体运动的动力学机制,通过一系列方程组捕捉水流的时空变化,而概念性水文模型则侧重于流域尺度的水文循环过程,利用物理概念与经验关系进行近似模拟。两者…

微信小程序毕业设计-农场驿站平台系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

Ubuntu 离线下载安装 Tmux(亲测有效)

昨晚跑NER模型中断了,今天就考虑安装下Tmux,但是一直安装不上,在尝试了好几次之后,终于不报错了!!特记录一下下载安装过程。(我这里是离线下载安装的) 1. 下载安装包 tmux wget ht…

调试小技巧:除了可以在控制台编写js代码,还有一个地方也可以,来试试吧!

写在前面 作为一名程序员,平常调试代码是必不可少的,控制台应该说是经常使用,除了可以看到打印的信息之外,我们还可以直接在控制台编写代码,以调试我们的代码。如下所示: 通过编写一些 js 代码&#xff0c…

[C++]红黑树

一、概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路 径会比其他路径长出俩倍,因而是…

配置阿里yum源

配置阿里yum源(这个很重要):https://developer.aliyun.com/article/1480470 1.备份系统自带yum源配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2.下载ailiyun的yum源配置文件 2.1 CentOS7 wge…

【Vue】响应式特性

响应式:简单理解就是数据改变,视图会自动更新。 如何访问 和 修改 data中的数据(响应式演示) data中的数据, 最终会被添加到实例上 例如这里,app身上就会拥有msg属性,修改msg的值,界面的值也会…

Deepin Linux 深度 V23 beige 官方源及换镜像源方法。

Deepin Linux 深度 V23 英文版本号:beige 谁起的烂名字。。。。。。 1. 打开文件管理器,在apt文件夹点右键(以管理员身份打开), 2. 输入你的登录密码,以便打开文件夹(管理员权限)。…

成都市酷客焕学新媒体科技有限公司:助力品牌打破困境!

在数字化浪潮的推动下,营销策略对品牌的发展愈发关键。成都市酷客焕学新媒体科技有限公司,作为短视频营销领域的佼佼者,凭借其卓越的策略和实力,助力众多品牌在信息海洋中脱颖而出,实现品牌的显著增长。 酷客焕学专注于…

【机器学习】基于tensorflow实现你的第一个DNN网络

博客导读: 《AI—工程篇》 AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效 AI智能体研发之路-工程篇(二):Dify智能体开发平台一键部署 AI智能体研发之路-工程篇(三&am…

学习sam的过程

一、抓包 我平时都是用花瓶去抓包的,配置也很简单。就是下载软件,然后一步步安装。下载地址:Download a Free Trial of Charles • Charles Web Debugging Proxy 。然后配置手机代理 对于那些走http协议的app是可以的,https的还是…

【记录】打印|无需排版,生成证件照打印PDF,打印在任意尺寸的纸上(简单无损!)

以前我打印证件照的时候,我总是在网上找在线证件照转换或者别的什么。但是我今天突然就琢磨了一下,用 PDF 打印应该也可以直接打印出来,然后就琢磨出来了,这么一条路大家可以参考一下。我觉得比在线转换成一张 a4 纸要方便的多&am…