Https、CA证书、数字签名

Https

  • Http协议

Http协议是目前应用比较多应用层协议,浏览器对于Http协议已经实现。Http协议基本的构成部分有

  1. 请求行 : 请求报文的第一行
  2. 请求头 : 从第二行开始为请求头内容的开始部分。每一个请求头都是由K-V键值对组成。
  3. 请求体: 请求头完成后以空行结束、从空行开始为请求体。

同理,Http响应也遵循上述基本结构

  1. 响应行:响应报文的第一行,主要包含了Http的版本、响应状态码。
  2. 响应头:从第二行开始为响应头内容的开始部分,每一个响应头都是由K-V键值对组成。
  3. 响应体:服务器器所有的响应内容都在响应体中返回,当然有些请求可能也没有响应体,例如302重定向请求。

所谓的协议就是 : 为了满足计算机通信双方可以正确的获取数据,处理数据而约定好的一种格式,如果不遵守协议,则无法正确处理数据。例如Http协议的响应行没有状态码,或者响应头格式不正确等都会导致浏览器无法正确解析。
遵循了标准Http协议,浏览器和服务器则可以根据对方传输的信息做正确处理,浏览器也可以正确展示数据。


之前的版本Http协议都是在浏览器与服务器之间使用明文传输的,这种方式是不安全的,极度容易被中间人攻击篡改传输的数据。于是Https协议诞生了。

  • Https起源
  1. 对称加密算法实现

既然Http协议是不安全的,那将传输的信息使用对称加密算法加密过后再传输就可以避免被中间人攻击了,但问题是,如何让对称加密的密钥让浏览器与服务器更安全的知道?如果浏览器直接将密钥发给服务器,那还是有可能被攻击者解惑,则后续再传输的任何信息都可以被轻松解密,所以对称加密也是不安全的。

  1. 非对称加密算法实现

非对称加密算法有以下优势:

  1. 有两把密钥,分为公钥和私钥,公钥加密只能私钥解密,而私钥加密只能公钥解密。
  2. 密钥长度更长,破解难度更高。
  3. 攻击者获取一把密钥无法实现对数据的加解密。

尝试用非对称加密算法来实现浏览器与服务器的安全通信


  1. 首先服务器把自己的公钥发送给浏览器
  2. 浏览器用服务器的公钥加密一串随机数字
  3. 将加密后的密文发送给服务器,即使被中间人攻击,由于私钥只有服务器才有,也是无法解密的。
  4. 服务器拿到密文,用自己的私钥进行解密,这样就可以获取到浏览器生成的随机数,后续用这个随机数进行对称加密即可。

常用的非对称加密实现算法有 RSA、DSA、SM2等。
绝大多数的非对称加密算法都是基于数学问题去实现的,例如RSA算法基于超大质数分解,SM2基于椭圆曲线率等。 在可预见的时间范围内,这几种算法的安全性依然是相当高的。

SSL、TSL
  • 非对称加密潜在的问题

在使用了非对称加密算法保证浏览器与服务器通信安全以后,似乎还是有一个问题没有解决,那就是如果服务器发送给浏览器公钥的过程中被中间人拦截,中间人替换成自己的公钥发送给浏览器,那么浏览器再用假的公钥加密随机数,发给服务器,此时再度被中间人攻击,由于浏览器加密用的是假的公钥,所以攻击者可以用自己的私钥进行解密,然后再用浏览器的公钥加密,发给浏览器,这个时候,攻击者已经完全拿到的浏览器生成的随机数了,那么后续双方的通信也都可以被轻松破解。

  • 问题解决

可以看到,根本的问题就是浏览器无法判断服务器发过来的公钥是不是服务器本身的还是被篡改的,此时就需要引入一个第三方机构了,这个第三方机构就是CA (Certificate Authority)。


服务器会像自己的域名信息、组织、主体以及最关键的公钥整理好,向CA机构申请颁发证书,CA机构经过审核以后,用自己的私钥对这些信息进行数字签名,也就是先将信息进行消息摘要,然后对这个消息摘要进行加密,然后将CA的公钥以及申请的信息打包成一个证书
CA会将证书下发给服务器。那么后续的通信过程是这样的:


  1. 浏览器向服务器发送请求,服务器会将自己的证书发给浏览器。
  2. 浏览器首先根据证书上的CA机构的公钥对密文进行解密,然后拿着解密的内容去比对证书上的数字签名是否一致,如果不一致,则表示证书有问题。如果攻击者篡改了篡改了服务器的公钥,则浏览器再进行数字签名验证时,就会出现问题,此时会提示风险。
  3. 如果攻击者也申请了一个证书来伪造,虽然可以正确解密出来,但两个域名的证书内容是不可能相同的,所以也无法验证成功,例如 访问的是 www.bilibili.com,而证书上的域名是 www.bi1ibi1i.com,此时也会提示证书安全问题。

此时看似解决了安全问题,但现在的问题是,浏览器如何知道CA机构的公钥不是被篡改过的呢?这就有点套娃了。
最简单的办法就是操作系统和浏览器直接内置了CA机构的公钥信息,内置的方式避免了攻击者篡改。

可以发现,上述将的浏览器和服务器的协商密钥的过程是独立于Http协议之外的,这一过成叫做
secure socket layer (安全套接字层),也就是 SSL,SSL经历过多次迭代发展后有了SSL1.0、SSL2.0、SSL3.0,后来更名为TSL。
所以SSL、TSL是独立于协议之外的一套安全机制,这一过程也称作SSL握手。

除此之外,证书也设置有效期、定义更换算法以及密钥也是提升安全性的一种方式。

  • CA机构

Symantec:赛门铁克(Symantec)SSL证书前身为 Verisign,后于2017年12月被DigiCert收购,现在已经使用 DigiCert 根证书。Symantec Secure Site SSL证书依然是各行业尤其是金融银行证券等大型企业认可的品牌。Symantec Secure Site SSL证书 支持诺顿安全签章,是网站拥有很好的可信度。
GeoTrust:是全球成长最快的数字证书颁发机构之一,在全球超过150个国家/地区颁发数百万的数字证书。
Comodo:是全球知名的互联网安全公司,为用户提供网站安全防护、SSL证书、反病毒软件等服务。
DigiCert:是全球领先的数字证书提供商,在SSL市场占有重要地位。DigiCert旗下拥有DigiCert、Symantec、Geotrust、Thawte、Rapid 5大SSL证书品牌,可以提供从基础型到高端型全系列的SSL证书解决方案。

证书的基本信息有颁发者、颁发机构等等
在这里插入图片描述

同时,证书中还包含了服务器的公钥、域名、CA机构的公钥、签名算法等等。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DoIP学习笔记系列:(五)“安全认证”的.dll从何而来?

文章目录 1. “安全认证”的.dll从何而来?1.1 .dll文件base1.2 增加客户需求算法传送门 DoIP学习笔记系列:导航篇 1. “安全认证”的.dll从何而来? 无论是用CANoe还是VFlash,亦或是编辑cdd文件,都需要加载一个与$27服务相关的.dll(Windows的动态库文件),这个文件是从哪…

【JavaWeb】MySQL约束、事务、多表查询

1 约束 PRIMARY KEY 主键约束 UNIQUE 唯一约束 NOT NULL 非空约束 DEFAULT 默认值约束 FOREIGN KEY 外键约束 主键 主键值必须唯一且非空;每个表必须有一个主键 建表时主键约束 CREATE TABLE 表名 (字段名 字段类型 PRIMARY KEY,字段名 字段类型 );CR…

Tomcat的多实例和动静分离

目录 一、多实例 二、 nginxtomcat的负载均衡和动静分离 三、Tomcat 客户端->四层代理->七层代理->tomcat服务器 实验: 问题总结: tomcat日志文件:/usr/local/tomcat/logs/catalina.out 一、多实例 在一台服务器上有多个tomc…

浅析前端请求登录与后台对接

首先确保前后端接口参数一致,我这里使用的是ant design Pro 前端框架 小技:shiftf6,全局重构,当接口不一致时很方便 前: 后: 前后端交互:前端需要向后端发送请求,前端ajax来请求后…

基于WebSocket的在线文字聊天室

与Ajax不同,WebSocket可以使服务端主动向客户发送响应,本案例就是基于WebSocket的一个在线聊天室,不过功能比较简单,只能满足文字交流。演示如下。 案例学习于b站up主,链接 。这位up主讲的非常清楚,值得去学…

Python脚本之连接MySQL【四】

本文为博主原创,未经授权,严禁转载及使用。 本文链接:https://blog.csdn.net/zyooooxie/article/details/124640412 之前写了篇 Python脚本之连接MySQL【三】,日常使用过程中,代码实际有很多改动,特此更新…

了解IL汇编循环

IL代码, .assembly extern mscorlib {}.assembly Test{.ver 1:0:1:0}.module test.exe.method static void main() cil managed{.maxstack 8.entrypoint.locals init (int32, int32)ldc.i4 4stloc.0 //Upper limit of the Loop, total 5 ldc.i4 0 stloc.…

5.文件共享

第四章 文件管理 5.文件共享 ​   假设此时系统中有两个用户User1和User2正在使用硬链接的方式来共享的使用文件1,而另一个用户User3想使用软连接的方式来共享这个文件1,那么User3会建立一个新的文件,这个文件是一个特殊的Link类型的文件&…

数据结构入门:栈

目录 前言 1. 栈 1.1栈的概念及结构 1.2 栈的实现 1.2.1 栈的定义 1.2.2 栈的初始化 1.2.3 入栈 1.2.4 出栈 1.2.5 栈的元素个数 1.2.6 栈顶数据 1.2.7 栈的判空 2.栈的应用 2.1 题目一:括号匹配 2.1.1 思路 2.1.2 分析 2.1.3 题解 总结 前言 无论你是计算机科学专…

算法笔试 java 输入输出练习

在线编程题刷题训练 所有答案 scancer函数的用法 输入输出总结top!!!! java如何调用函数(方法) java刷acm的各种输入输出 vscode配置java环境 子函数的调用,直接定义一个static子函数调用就…

c51单片机串口通信(中断方式接收数据)(单片机--单片机通信)示例代码 附proteus图

单片机一般采用中断方式接受数据,这样便于及时处理 #include "reg51.h" #include "myheader.h" #define uchar unsigned char int szc[10]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int bufferc[6]{0}; int sza[6]{0x01,0x02,0x0…

46.利用matlab绘制维安尼曲线(matlab程序)

1.代码 clear close all syms s t k u r; x12*sin(s)*cos(t);y12*sin(s)*sin(t);z12*cos(s); x2-2*cos(k)*cos(k);y22*sin(k)*cos(k);z2u; subplot(1,2,1);ezmeshc(x2,y2,z2,[0,pi,-2,2]); %绘制圆柱面 hold on; ezsurf(x1,y1,z1,[-pi,pi,0,pi]); %绘制球面 title( 球面与圆柱…

Windows11中使用OneDrive按Print Screen截屏按键,把截图自动保存到OneDrive中

参考:关于Onedrive 我已经勾选了自动保存屏幕截图 但是我截图之后我的图片并没有上传到onedrive上面 - Microsoft Community 1. 打开Windows 11的设置,可以通过按下Win I键来快速打开设置; 2. 设置--辅助功能--键盘--使用”print Screen“键…

ChatGPT能代替搜索引擎吗?ChatGPT和搜索引擎有什么区别?

ChatGPT和搜索引擎是两种在信息获取和交流中常用的工具,ChatGPT是一种基于人工智能技术的聊天机器人,而搜索引擎是一种在互联网上搜索信息的工具。尽管它们都是依托互联网与信息获取和交流有关,部分功能重合,但在很多方面存在着明…

vue中封装自动计算比例滑块

此插件为另一位漂亮的前端同事小姐姐封装,觉得非常好用于是决定记载下来,便于复用 如图需要动态传入需要分配权重的数组,平均分配可以自动将100%平均分给数组中的值 如果手动拖拽,则会自动计算可拖动最大区域,便于最终总权重必定为100% <el-alert class"merge-alert&…

2023国赛数学建模D题思路分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…

Spring Boot + Vue3前后端分离实战wiki知识库系统十二--用户管理单点登录开发一...

目标&#xff1a; 在上一次https://www.cnblogs.com/webor2006/p/17533745.html我们已经完成了文档管理的功能模块开发&#xff0c;接下来则开启新模块的学习---用户登录&#xff0c;这块还是有不少知识点值得学习的&#xff0c;先来看一下整体的效果&#xff0c;关于效果官网有…

BUUCTF 还原大师 1

题目描述&#xff1a; 我们得到了一串神秘字符串&#xff1a;TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母&#xff0c;为了确定这个神秘字符串&#xff0c;我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全&#xff0c;E903???4D…

【elementUi】绘制自定义表格、绘制曲线表格

要求绘制下图系列表格&#xff1a; 实现步骤: 1.绘制树&#xff0c;实现树勾选字段—>表格绘制字段 逻辑&#xff1a; 树&#xff1a;check-change“treeChart.handleCheckChange” 绑定点击选择事件&#xff0c;改变data.column3数据项&#xff1b;表格:columns"data…