网络原理(二)—— https

server/2025/1/15 7:57:07/

https__0">https 简介

https 也是一个应用层协议,他是由 http 和 SSL 组成的(在 http 的基础上进行加密,把原本http 的明文传输变为了密文传输),简称为 https

加密的方式大体分为两大类,分别是对称加密和非对称加密。

对称加密

对称加密就是只生成一个密钥,这个密钥既是用来加密,也是用来解密的。

大致流程如下:
首先客户端生成一个密钥,然后通过网络传输发送给服务器,服务器先保存起来,之后两者之间传输的数据均由这个密钥进行加密或者解密。

https://i-blog.csdnimg.cn/direct/672e9c593c0e44cc9f0240ddb02d6780.png" alt="在这里插入图片描述" />

非对称加密

由于对称传输使用的密钥是直接公开在网路中的,如果此时有一个路由器被黑客劫持,那么就可能会被黑客篡改信息,造成不良的影响,如下图:

https://i-blog.csdnimg.cn/direct/1a5250cd5359462b8a860bb23150147e.png" alt="在这里插入图片描述" />
因此如果密钥只用一个并且是公开传输,其实很不安全,这时候引入非对称传输。

非对称传输使用两个密钥,一个是公钥,另一个是私钥,公钥就是和上面的对称传输的密钥类似,是公开出去的,而私钥是自己保存的,不对外公开的。

公钥既可以用来解密,也可以用来加密,私钥也是,但是公钥和私钥两者只能做其中一件,例如,如果使用公钥来加密,那私钥就是用来解密的,如果私钥是用来加密,那公钥就是用来解密的。

公钥和私钥由服务器生成,服务器会把公钥公开出去,私钥会自己保存。

https://i-blog.csdnimg.cn/direct/8681c2c0b39d4a53a0317a6749cd7522.png" alt="在这里插入图片描述" />

由于非对称加密消耗的算力比较大,所以一般我们使用非对称加密的是对称加密产生的密钥,不涉及庞大的业务数据。
对称加密则是针对业务数据加密的,只要非对称加密安全,就能保证对称加密的密钥不会泄漏,也就保证了此次会话的安全性。

中间人攻击

非对称加密也不一定安全,黑客可以利用设备伪装成服务器,给客户端发送假冒的公钥,如下图所示:
https://i-blog.csdnimg.cn/direct/a8a682f8ffec4f08a89bdbb36c3278ed.png" alt="在这里插入图片描述" />
这就是中间人攻击

数字证书

为了避免发生中间人攻击,我们需要验证从服务器获得公钥是不是来自服务器的。

在服务器使用https 之前,会像CA机构进行权威认证,申请一份数字证书。

服务器把证书传输给浏览器,浏览器从证书里获取公钥,证书就如身份证,证明服务端公钥的权威性

数字证书的制作:
首先CA机构会使用非对称加密算法生成公钥和私钥,使用私钥来对数字证书进行加密,数字证书包含服务器的域名、公钥、数字签名、证书所有者、证书有效日期等等,通过算法把这些数据进行加密,客户端通过公钥进行解密验证,只要出现错误就会弹出警告这个网站不安全。

首先公钥的传输不是通过网络传输的,而是在电脑安装系统的时候就会把公钥一同保存到电脑里,这样黑客就无法进行中间人攻击伪造假证书。

有了数字证书之后,服务器和客户端之间的通信如下图所示:
https://i-blog.csdnimg.cn/direct/73c92912aa7447f98eff75b946615430.png" alt="在这里插入图片描述" />
在对称加密基础上引入非对称加密,在非对称加密的基础上又引入了数字证书,这样就保证了我们的数据传输的安全性。


理解数字签名:
数字签名本质上就是校验和,首先对一串数据进行哈希函数运算获得散列值,然后使用CA自己的私钥进行加密散列值,然后这串原始数据和加密过的散列值会一起存放在数字证书里,客户端使用CA的公钥对散列值进行解密获得校验和1,对原始的数据使用相同的散列函数运算得到校验和2,如果这两个校验和是一致的就说明签名是合法有效的。


客户端验证数字证书的步骤:
首先判断证书是否过期
其次判断证书的发布机构是否可以信任(操作系统中已内置的受信任的证书发布机构)
最后验证证书是否被篡改:从系统获取该证书机构的公钥,对签名进行解密获得校验和1,然后计算整个证书的hash值,得到校验和2,判断两个校验和是否相等。相等则说明证书没有被篡改过。


为什么黑客篡改不了数字签名,因为一旦篡改,里面的校验和也要跟着改,黑客没有CA的私钥,无法进行正确的加密,这样客户端使用公钥解密就会发现两个校验和对不上。


http://www.ppmy.cn/server/158210.html

相关文章

【HTML+CSS+JS+VUE】web前端教程-20-选择器(二)

ID选择器 针对某一个特定的标签来使用,只能使用一次,css中的ID选择器以#定义 <p id="nihao">你好</p>#nihao{color: red;font-size: 50px;}特别强调; ID是唯一的 ID不能以数字开头 合并选择器

CSS响应式

除了常见的media、flex、grid外的其他css响应元素 1.min()函数 当我们想根据不同尺寸调整容器的边距时&#xff0c;首先想到的可能是媒体查询 <style>.container{padding: 5em;}media (max-width: 600px) {.container{padding: 2em;}} </style> <div class&…

2025域名出售交易平台PHP源码

源码介绍 2025域名出售交易平台PHP源码,搭建即可正常使用&#xff0c;后台功能测试正常&#xff0c;前台测试正常,无需到处找教程或修复&#xff0c;教程一次性到位 搭建教程 PHP必须是5.6的 导入数据库 数据库配置文件 config/config.php 后台 http://域名/ymadmin 用户&am…

前端开发:HTML常见标签

1.注释标签 注释不会显示在界面上 . 目的是提高代码的可读性 . ctrl / 快捷键可以快速进行注释 / 取消注释 . <!-- 我是注释 --> 2.标题标签 有六个 , 从 h1 - h6. 数字越大 , 则字体越小 <h1> hello </h1> //我们所写的csdn的格式中的标题一…

STM32 FreeRTOS的任务创建和删除

目录 任务创建和删除的API函数 动态创建任务函数 函数说明 动态创建任务步骤 动态创建任务函数内部实现 静态创建任务函数 函数说明 静态创建任务步骤 静态创建内部实现 任务删除函数 函数说明 删除任务流程 内部实现过程 任务创建和删除的API函数 任务的创建和删…

搭建docker私有化仓库Harbor

Docker私有仓库概述 Docker私有仓库介绍 Docker私有仓库是个人、组织或企业内部用于存储和管理Docker镜像的存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部…

【ASP.NET学习】Web Forms创建Web应用

文章目录 什么是 Web Forms&#xff1f;ASP.NET Web Forms - HTML 页面用 ASP.NET 编写的 Hello RUNOOB.COM它是如何工作的&#xff1f;经典 ASP ASP.NET Web Forms - 服务器控件经典 ASP 的局限性ASP.NET - 服务器控件ASP.NET - HTML 服务器控件ASP.NET - Web 服务器控件ASP.N…

【Redis学习 | 第5篇】Redis缓存 —— 缓存的概念 + 缓存穿透 + 缓存雪崩 + 缓存击穿

文章目录 完成任务1. 什么是缓存2. 添加商户缓存3. 缓存更新策略3.1 主动更新 4. 缓存穿透5. 缓存雪崩6. 缓存击穿6.1 使用互斥锁查询商铺信息6.2 使用逻辑过期查询商铺信息 7. 封装 Redis 工具类 完成任务 1. 什么是缓存 缓存&#xff1a;数据交换的缓冲区&#xff08;Cache…