面试高频:HTTPS 通信流程

在这里插入图片描述

更多大厂面试内容可见 -> http://11come.cn

面试高频:HTTPS 通信流程

HTTPS 的加密流程

接下来说一下 HTTPS 协议是如何进行通信的:

HTTPS 通信使用的 对称加密 + 非对称加密 两者结合的算法

HTTPS 通信时,会先使用 非对称加密 让通信双方都拿到一个 对称密钥 ,之后双方通过这个 对称密钥 进行加密通信,通信过程使用的就是 对称加密

为什么要使用两种加密算法的结合呢?

  • 对称加密:加密解密过程中使用相同的密钥,速度很快,但是如何让双方都安全的拿到这个密钥比较困难(因此和非对称加密结合,来安全的传输这个对称密钥)
  • 非对称加密:加密解密过程中使用一对密钥,即公钥和私钥。公钥是公开的,用于加密;私钥只能自己拿到,用于解密,整个过程相对复杂,比较耗时,一般用于密钥的交换

通过了解这两种算法的区别,也就知道了为什么要使用这两种算法的结合了,HTTPS 既想要对称加密的性能,又想要非对称加密的安全性!

HTTPS 建立连接的流程

HTTPS 是基于 HTTP 协议,添加了 SSL 层来保证了数据传输的可靠性

HTTPS 的通信流程用大白话说的话,总共有 3 个步骤,如下:

1、客户端向服务器请求获取 公钥

2、双方协商产生 对称密钥

3、双方采用 对称密钥 进行加密通信

前两个步骤是建立 SSL/TLS 的过程,HTTPS 是基于 SSL 或 TLS 进行加密的,不过 SSL 已经退出历史舞台了,现在说的 HTTPS 其实就是 HTTP+TLS

使用 HTTPS 通信的话,通信双方先建立 HTTP 通信,也就是通过 TCP 三次握手建立 TCP 连接,之后再进行 TLS 握手 进行 HTTPS 加密通信

那么 TLS 握手的过程总共包含了 4 次通信 ,在 4 次通信之后,TLS 协议也就建立成功了,可以进行 HTTPS 通信了,TLS 握手过程中的 4 次通信如下:

1、第一次通信 ClientHello :客户端向服务端发送加密请求,主要是协商 TLS 版本、随机数(生成后续的对称密钥)

2、第二次通信 ServerHello :服务端向客户端回复,主要协商 TLS 版本、随机数(生成后续的对称密钥)、数字证书(包含公钥)

3、第三次通信 客户端回应 :取出数字证书的公钥,将用于通信的 对称密钥 通过公钥加密发送给服务端

4、第四次通信 服务端最后回应 :使用自己本地的密钥进行解密,得到用于通信的 对称密钥

通过 TLS 握手阶段,双方就可以拿到对称密钥,之后双方就可以使用这个 对称密钥 进行加密通信了

数字证书

这里再补充一下关于数字证书相关的内容

数字证书是由一个双方都信任的第三方机构签发,这个机构就是 CA (Certificate Authority,证书认证机构)

在 TLS 握手的时候,客户端第一次向服务端发起加密请求,此时服务端就会向 CA 申请数字证书,再把数字证书发送给客户端

客户端收到服务端发来的 数字证书 之后,此时客户端并不知道这个数字证书是否合法,万一在传输过程中被篡改了呢?

因此客户端会将 根证书 提前预装在系统内部,当客户端收到数字证书之后,根据本地的根证书去校验这个数字证书是否合法,如果合法的话,客户端拿到证书内部的公钥,就可以使用这个公钥加密信息发送给服务端了,双方在这个过程中通过非对称加密来协商一个对称密钥,之后使用对称密钥进行加密传输即可

数字证书中包含的内容:持有者的公钥、用途、颁发者、有效时间等信息

签发证书的流程如下:

image-20240421163303456

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是OCR转换?

OCR转换是指将图片或扫描文档中的文字内容转换成电子文本的过程。OCR代表光学字符识别(Optical Character Recognition),是一种通过算法和模型来识别图像或文档中的文字,并将其转换成可编辑、可搜索的文本格式。OCR转换通常包括以…

企业常用Linux三剑客awk及案例/awk底层剖析/淘宝网cdn缓存对象分级存储策略案例/磁盘知识/awk统计与计算-7055字

高薪思维: 不愿意做的事情:加班,先例自己在利他 生活中先利他人在利自己 感恩,假设别人帮助过你,先帮助别人,感恩境界 awk三剑客老大 find其实也算是一种新的第四剑客 find 查找文件 查找文件,与其他命令…

Linux基础03-Linux文件操作命令

其实啊,说起计算机操作,大部分情况下就是“增删改查”这四个大字儿,文件操作也是这么回事儿。 就是改文件的时候得用点专门的编辑器,比如那个Vim。 不过Vim这东西,真心不是一两句话就能给你讲清楚的,咱们在…

socket套接字在tcp客户端与tcp服务器之间的通信,以及socket中常用的高效工具epoll

1.socket(套接字)的概念 Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议,主要利用三元组【ip地址,协议&am…

STM32F1之I2C通信

目录 1. 简介 2. 硬件电路 3. IIC时序基本单元 3.1 发送一个字节 3.2 接收一个字节 3.3 发送应答 3.4 接收应答 1. 简介 I2C(Inter-Integrated Circuit)总线是由NXP Semiconductors(前身为Philips Semiconductor)…

【C++初阶】vector使用特性 vector模拟实现

1.vector的介绍及其使用 1.1 vector的介绍 vector文档介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组&#…

浏览器数据找回

网站上分享的文章应该都是个人的心血,对于一些操作问题导致心血丢失真的很奔溃,终于找到一个弥补的办法,csdn的文章谷歌浏览器亲测有效,理论上其他浏览器的其他网站应该也可以,适用以下场景 把博客编辑当成了编写新博…

ELK 日志分析(二)

一、ELK Kibana 部署 1.1 安装Kibana软件包 #上传软件包 kibana-5.5.1-x86_64.rpm 到/opt目录 cd /opt rpm -ivh kibana-5.5.1-x86_64.rpm 1.2 设置 Kibana 的主配置文件 vim /etc/kibana/kibana.yml --2--取消注释,Kiabana 服务的默认监听端口为5601 server.po…

ARM与单片机有啥区别?

初学者必知:ARM与单片机到底有啥区别?1、软件方面这应该是最大的区别了。引入了操作系统。为什么引入操作系统?有什么好处嘛? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「ARM的资料从专业入门到高级教…

如何扛过人生的至暗时刻,获得幸福人生?

人生的至暗时刻是每个人在成长过程中都可能遇到的经历,它们可能包括失去亲人、失业、健康问题、情感破裂或其他形式的个人危机。在这些时刻,我们可能会感到绝望、孤独和无助。然而,正是在这些挑战中,我们也有机会学习如何变得更坚…

VUE运行找不到pinia模块

当我们的VUE运行时报错Module not found: Error: Cant resolve pinia in时 当我们出现这个错误时 可能是 没有pinia模块 此时我们之要下载一下这个模块就可以了 npm install pinia

同旺科技 USB TO SPI / I2C适配器读写24LC128--读写

所需设备: 1、USB 转 SPI I2C 适配器;内附链接 2、24LC128芯片; 适应于同旺科技 USB TO SPI / I2C适配器专业版; 专业版配套软件更新; 直接读取HEX文件,自动完成文件解析; 支持芯片&#xf…

【编程Tool】VS code安装与使用配置保姆级教程

目录 1.软件介绍 2.软件下载: 3.安装 3.1. 双击可执行文件 3.2. 同意协议 3.3. 选择安装路径,默认在C盘 3.4. 点击下一步 3.5. 可选择所有附加任务 3.6. 点击安装 3.7. 等待安装 3.8. 点击完成 3.9. 安装成功 4.下载MinGW64 4.1. MinGW-64下载地址 &…

《深入浅出.NET框架设计与实现》笔记2——C#源码从编写到执行的流程

中间语言(Intermediate Language,IL) C#编译器在编译时,会将源代码作为输入,并以中间语言形式输入出,该代码保存在*.exe文件中或*.dll文件中。 公共语言运行时(CLR) 可以将IL代码…

控制与估计的融合 —— 自抗扰控制

一、自抗扰控制—控制与估计融合 控制理论中的控制与估计是互为对偶的概念,二者在系统控制过程中相辅相成,共同实现了对系统状态的精确管理和优化控制。自抗扰控制(Adaptive Disturbance Rejection Control, ADRC)技术是将控制与…

天星金融(原小米金融)履行社会责任,提高社保政策知晓度

二十大报告指出“为民造福是立党为公、执政为民的本质要求“,人民幸福安康是推动高质量发展的最终目的。社会保障作为维护社会公平、增进人民福祉的基本制度,既是“安全网”也是“稳定器”,发挥着改善民生的重要作用。为进一步提升人民群众对…

230基于matlab的布谷鸟(COA)多目标优化算法

基于matlab的布谷鸟(COA)多目标优化算法,以 满意度、成本、时间、质量为目标的多目标优化求解代码。程序已调通,可直接运行。 230 matlab 布谷鸟(COA)多目标优化 - 小红书 (xiaohongshu.com)

使用spring boot集成shardingsphere分库分表简易测试

根据如下pom整上一个spring-boot项目&#xff0c;spring-boot版本用2.3.5&#xff0c;shardingsphere用5.1.1。 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://ww…

Jolt Json转换工具的基础教程

Jolt Json转换工具 jolt是一个轻量级的json文件转换库&#xff0c;可以把输入的json按照你编写脚本模板输出成你想要的json文本&#xff0c;能实现同样功能的有我们常用的velocity模板引擎&#xff0c;但jolt跟轻量且更专注于json&#xff0c;且在实现一些简单的格式转换中&am…

怎么样零代码零成本搭建个人网站

先申明 为了避免有标题党的嫌疑&#xff0c;这里先做申明。 标题中说的零代码指的是借助VuePress 通过简单配置&#xff0c;帮助我们生成静态网站。 零成本指的是借助GitHub Pages 或者Gitee Pages 部署VuePress生成的静态网站。让互联网上的小伙伴访问到我们的个人网站。 …