HTTPS数字证书验证论述
1 概述
网络请求方式通常分为两种,分别是HTTP请求和HTTPS请求,其中HTTP的传输属于明文传输,在传输的过程中容易被人截取并且偷窥其中的内容,而HTTPS是一种在HTTP的基础上加了SSL/TLS层(安全套接层)的安全的超文本传输协议,其传输的内容是通过加密得到的,所以说是一种安全的传输
2 加密算法
说到加密算法,先来了解一下两种常用的加密方式,分别是对称加密和非对称加密:
1.对称加密:加密使用的秘钥和解密使用的秘钥是相同的,也就是说加密和解密都使用同一个秘钥,加密算法是公开的,秘钥是加密者和解密者绝对保密的
2.非对称加密:加密使用的秘钥和解密使用的秘钥是不相同的,HTTPS在数字证书验证的时候,采用的RSA密码体制就是一种非对称加密
RSA是一种公钥密码体制,现在使用非常广泛,这个密码体制分为三部分,公钥、私钥、加密算法,其中公钥和加密算法是公布的,私钥是自己保密的。这种机制最大的特点是,通过公钥加密的密文只有对应的私钥才能解密,同样通过私钥加密的密文也只有对应的公钥才能解密。下面我们将会讲到HTTPS是如何通过RSA这种密码体制去验证身份的
3 数字证书
数字证书是Https实现安全传输的基础,它是由权威的CA机构颁发的,证书的主要内容有:公钥(Public Key)、ISSUER(证书的发布机构)、Subject(证书持有者)、证书有效期、签名算法、指纹及指纹算法
在网络中,要想实现自己的数据能够安全地传输,就必须向权威的CA机构申请数字证书,有了数字证书就相当于有了一把安全秘钥,这里先认识一下证书是长啥样的,之后再解析证书是如何进行安全认证的
下面是CSDN博客的证书内容:
可以看到公钥是一串很长的2048 Bits的字符串,同时也可以看到<使用者>的内容包含了csdn.net网址,在后面验证URL链接是否正确的时候用到,还有颁发者、有效期、签名算法等等。当然还有指纹及指纹算法等其他内容,我们滚动到下面看看另一个截图
上面展示了CSDN网站的CA证书内容,颁发者是GeoTrust,它就是传说中的权威的CA机构了。这里特别说明一下,CA机构除了给别人颁发证书以外,它也有自己的证书,这个证书是机构自己颁发给自己的,为了区分我们称它为根证书,根证书也有自己的公钥和私钥,在本文中我们称之为根公钥和根私钥,根公钥和加密算法是对外公布的,而根私钥是CA机构自己绝对保密的。这个根证书在验证证书的过程中起着核心的作用
哪里可以看到机构的根证书呢?
在受信任的根证书颁发机构中我们看到一系列的CA机构,如上面CSDN的证书的颁发者GeoTrust机构也在其中,这些权威机构的根证书都是浏览器预先嵌入到其系统中的,点开看看GeoTrust的根证书,可以发现颁发者和使用者都是一样的,其中里面的公钥就是根公钥,在验证数字证书的时候非常关键
4 证书的指纹和签名
在解析数字证书的验证之前,先来解析一下什么是指纹和数字签名?
在上面的CSDN的证书中可以看到有一个叫指纹的字符串,指纹可以理解为证书身份的唯一代表,是用来保证证书的完整性的,确保证书没有被修改过。证书在发布之前,CA机构对证书的内容用指纹算法(一般是sha1或sha256)计算得到一个hash值,这个hash值就是指纹。
(为什么用hash值作为证书的身份代表呢?首先,hash值具有不可逆性,也就是说无法通过hash值得出原来的信息内容;其次,hash值具有唯一性,即hash计算可以保证不同的内容一定得到不同的hash值)
签名是在信息后面加上的一段数字串,可以证明该信息有没有被修改过。数字证书在发布的时候,CA机构将证书的指纹和指纹算法通过自己的私钥加密得到的就是证书的签名了
先简单阐述一下证书的指纹和签名的作用,我们在验证证书的时候,首 先通过机构的根公钥去解密证书的签名,解密成功的话会得到证书的指纹和指纹算法,指纹是一个hash值,它代表着证书的原始内容,此时再通过指纹算法计算证书内容得到另外一个hash值,如果这两个hash值相同,则代表证书没有被篡改过,否则就是被篡改了
5 证书的验证
假设这是一个浏览器的HTTPS请求
**一:**首先浏览器通过URL网址去请求服务端,服务端接收到请求后,就会给浏览器发送一个自己的CA数字证书
**二:**浏览器接收到证书以后,就要开始进行验证工作了。首先从证书中得知证书的颁发机构,然后从浏览器系统中去寻找此颁发机构的根证书。上面我们也看到,世界上权威CA机构的根证书都是预先嵌入到浏览器中的,如果在浏览器系中没有找到对应的根证书,就代表此机构不是受信任的,那么就会警告无法确认证书的真假,比如以前打开12360网站就会提示,现在不会了
如果我们找到了证书颁发机构的根证书,那么就从根证书中取得那个根公钥,用根公钥去解密此证书的数字签名,成功解密的话就得到证书的指纹和指纹算法,指纹是证书内容通过指纹算法计算得到的一个hash值,这里我们称之为h1,h1代表证书的原始内容;然后用指纹算法对当前接收到的证书内容再进行一次hash计算得到另一个值h2,h2则代表当前证书的内容,如果此时h1和h2是相等的,就代表证书没有被修改过。如果证书被篡改过,h2和h1是不可能相同的,因为hash值具有唯一性,不同内容通过hash计算得到的值是不可能相同的
有人说假如证书上的指纹是不法分子伪造的,伪造是没有用的,因为你伪造的指纹不可能用CA机构的根私钥去加密(根私钥是CA机构绝对保密的),伪造者只能拿自己的秘钥去加密这个伪造的指纹,但当我们拿机构的根公钥去解密伪造指纹的时候是不可能成功的(加密内容只能由一对公钥私钥解密)
在证书没有被修改过的基础上,再检查证书上的使用者的URL(比如csdn.net)和我们请求的URL是否相等,如果相等,那么就可以证明当前浏览器链接的网址也是正确的,而不是一些钓鱼网之类的
但如果浏览器的连接被某个中间人截取了,中间人也可以发一个由权威的CA机构颁发的证书给浏览器,然后也可以通过证书没有被篡改的验证,但是在证书没有被篡改的前提下,通过对比证书上的URL和我们请求的URL是否相同,我们还是可以判断当前证书是不是服务器发的证书。可以这么理解,因为URL具有唯一性,所以中间人的证书的上的URL和我们的证书的URL是不可能相同的,如果中间人修改了自己证书上的URL,那么就通过不了证书没有被篡改的验证,所以中间人的证书也是欺骗不了我们的
到这里我们认证了三点信息:
-
证书是否为受信任的权威机构颁发的
-
证书是否被篡改
-
证书是否为服务器发过来的,而不是第三方发的
**三:**基于上面的三点信息认证都没有问题的情况下,下一步我们有一个重要的任务就是,如何将一个对称加密算法的秘钥安全地发给服务器
首先随机生成一个字符串S作为我们的秘钥,然后通过证书公钥加密成密文,将密文发送给服务器。因为此密文是用公钥加密的,这是一个非对称加密,我们知道,这个密文只有私钥的持有者才能进行解密,在这里私钥的持有者当然是服务器了,所以说任何第三方截取到密文也是没用的,因为没有对应的私钥无法解密得到我们的密文
还有一个关键步骤,发送密文的时候也会对消息内容进行签名操作。签名上面讲解过,就是对密文内容进行hash计算得到的hash值再通过公钥或私钥加密得到的一段数字串,这个签名和消息内容一起发送出去。接收方收到消息以后,通过私钥或公钥解析出密文和签名的hash值,同时也会对接收的消息内容进行同样的hash计算得到另一个hash值,比对两个hash值是否相同来判断消息有没有被篡改过
**四:**通过了上面的步骤以后,此时客户端和服务端都持有了对称加密算法的同一个秘钥,然后兄弟俩就可以愉快地安全通信了
6 总结
数字证书的验证有两个重要的步骤,第一是客户端验证服务器发的数字证书有没有被篡改,以及没有被篡改的证书是否为服务器发的证书,而不是任何第三方假冒服务器发的证书;第二是客户端将对称加密算法的秘钥安全地发送给服务器。这两步都完成以后,整个HTTPS的数字证书的验证就算是成功了。
相关文章:

HTTPS数字证书验证论述
1 概述 网络请求方式通常分为两种,分别是HTTP请求和HTTPS请求,其中HTTP的传输属于明文传输,在传输的过程中容易被人截取并且偷窥其中的内容,而HTTPS是一种在HTTP的基础上加了SSL/TLS层(安全套接层)的安全的…...
【高考志愿】地质资源与地质工程
目录 一、专业概述 1.1 专业定义 1.2 主要课程 1.3 专业培养目标 二、就业前景和考研方向 三、工作特点和挑战 四、如何培养核心竞争力 五、 地质资源与地质工程专业排名 六、结语 关于高考志愿选择地质资源与地质工程专业,以下是一些详细的介绍和参考信息…...

全网最佳硕士研究生复试简历模板
硕士研究生复试简历模板 ✨ 简介 提供了一个适用于国内硕士研究生复试的个人简历模板。该模板通过统一的“样式”形成规范的Word格式,是目前研究生复试的最佳简历模板之一。模板使用“华文中宋”字体,如您的电脑中未安装此字体,请提前安装。…...

Rocky Linux 9 系统OpenSSH CVE-2024-6387 漏洞修复
Rocky Linux 9系统 OpenSSH CVE-2024-6387 漏洞修复 1、漏洞修复2、修复思路3、修复方案3.1、方案一3.2、方案二 4、总结5、参考 1、漏洞修复 CVE-2024-6387:regreSSHion:OpenSSH 服务器中的远程代码执行(RCE),至少在…...

Sping源码(九)—— Bean的初始化(非懒加载)—mergeBeanDefinitionPostProcessor
序言 前几篇文章详细介绍了Spring中实例化Bean的各种方式,其中包括采用FactoryBean的方式创建对象、使用反射创建对象、自定义BeanFactoryPostProcessor以及构造器方式创建对象。 创建对象 这里再来简单回顾一下对象的创建,不知道大家有没有这样一个疑…...

labview技巧——AMC框架安装
AMC工具包的核心概念是队列,队列是一种先进先出(FIFO,First In First Out)的数据结构,适用于处理并发和异步任务。在LabVIEW中,队列可以用于在不同VI之间传递数据,确保消息的有序处理࿰…...

解锁分布式云多集群统一监控的云上最佳实践
作者:在峰 引言 在当今数字化转型加速的时代,随着混合云、多云多集群环境等技术被众多企业广泛应用,分布式云架构已成为众多企业和组织推动业务创新、实现弹性扩展的首选,分布式云容器平台 ACK One(Distributed Clou…...
学会拥抱Python六剑客,提高编程效率
在Python语言中,有六个强大的工具,它们被称为"Python六剑客"。而Python六剑客指的是Python中常用的六种功能强大且灵活的工具,它们分别是“切片(Slicing),推导列表(List Comprehensio…...
mysql 根据当前时间筛选某个时间范围内的数据
1.根据天数筛选 SELECT * FROM coupons WHERE NOW() BETWEEN start_time AND end_time; 在这个查询中,NOW()函数返回当前的日期和时间。BETWEEN操作符用于检查NOW()返回的当前时间是否在start_time和end_time之间(包括这两个时间)。 注意&a…...
Linux 常用指令详解
Linux 是一个强大而灵活的操作系统,掌握常用的 Linux 指令是使用和管理 Linux 系统的基础。本文将介绍一些常用的 Linux 指令,并附上 Vim 和 g 的常用指令说明,帮助你更好地进行开发和操作。 1. 基本文件操作指令 1.1 显示目录内容 ls常用…...

【简单讲解下npm常用命令】
🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…...
Header Location重定向机制解析与应用
Header Location重定向机制解析与应用 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨HTTP中的Header Location重定向机制,以及在…...

硅纪元AI应用推荐 | 国产创作引擎即梦AI助力创作者探索创作新境界
“硅纪元AI应用推荐”栏目,为您精选最新、最实用的人工智能应用,无论您是AI发烧友还是新手,都能在这里找到提升生活和工作的利器。与我们一起探索AI的无限可能,开启智慧新时代! 在人工智能快速发展的今天,各…...
使用TableGeneration生成已标注的表格数据用于表格识别
利用 TableGeneration 生成多样化表格数据 TableGeneration 简介环境准备chrome浏览器(Linux下推荐)火狐浏览器(Mac下推荐) 生成表格生成表格 参数说明结论 在数据生成和处理领域,表格数据的生成是一个常见需求,尤其是在机器学习和数据分析领域。今天&am…...

赛目科技三度递表:净利率及资产回报率不断下滑,经营成本越来越高
《港湾商业观察》施子夫 5月29日,北京赛目科技股份有限公司(以下简称,赛目科技)第三次递表港交所,公司拟主板上市,独家保荐机构为光银国际。 公开信息显示,赛目科技此前曾于2022年12月&#x…...

【QT】概述|对象树模型|两种控件模式|信号和槽|lambda
目录 什么是QT 特点 QT程序 main函数 QT按钮 纯代码模式 图形化模式 对象树模型 信号和槽 连接与断开 自动连接 断开连接 信号的发射 lambda表达式 基本语法 捕获列表 Lambda表达式用于信号与槽的连接 例如 什么是QT Qt是一个跨平台的C图形用户界面应用…...
Java中的安全编码实践与防御技巧
Java中的安全编码实践与防御技巧 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨Java中的安全编码实践与防御技巧,这对于开发人员来说…...
linux 常用的命令、文件路径、其他工具或软件包
命令 sudo apt dist-upgrade 解决显示 暂不升级、未被升级dd if/dev/zero of./rootfs.img bs1G count6 制作一个 6G 的空白镜像。bs 是块字节数,count 是 bs 的个数。dd if./rootfs.img of/dev/sdc2 bs512 烧录 rootfs.img 镜像到 /dev/sdc2。bs 是 512 个字节&…...

00 如何根据规律在变化中求发展?
你好,我是周大壮。目前,我已在搜索推荐等算法技术领域从事研发近 10 年,做过诸多流量分发领域的算法技术工作。 如今任 58 同城的算法架构师、技术委员会人工智能分会委员、58 本地服务事业群算法策略部负责人,我主要负责 58 集团…...
UUID和自增ID做主键到底哪个好?
UUID(通用唯一识别码) 优点: 全局唯一性:由不同算法生成,确保全球范围内的唯一性,避免主键冲突。不可预测性:随机生成,难以被猜测,适合保密性应用。分布式应用࿱…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...

6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...

从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...