Https、CA证书、数字签名

news2024/11/24 12:05:14

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.coloradmin.cn/o/871869.html

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

相关文章

Remote Sensing,2023 | 基于SBL的分布式毫米波相干雷达成像的高效实现

Remote Sensing,2023 | 基于SBL的分布式毫米波相干雷达成像的高效实现 注1:本文系“无线感知论文速递”系列之一,致力于简洁清晰完整地介绍、解读无线感知领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; MobiCom, Sigcom, MobiSys, NSDI…

Kubeadm安装K8s集群

一、硬件环境 准备3台Linux服务器&#xff0c;此处用Vmware虚拟机。 主机名CPU内存k8smaster2核4Gk8snode12核4Gk8snode22核4G 二、系统前置准备 配置三台主机的hosts文件 cat << EOF > /etc/hosts 192.168.240.130 k8smaster 192.168.240.132 k8snode1 192.168.…

小白必看:测试人有必要参考的软件测试工作规范

为了规范测试工作、减少开发与测试之前的沟通成本、保证项目进度、提高软件质量&#xff0c;测试人员有必要参考这份软件测试工作规范。 1.1. 编码规范 软件程序开发需要遵守编码规范&#xff0c;一是可以减少代码的维护成本&#xff0c;提高开发工作效率&#xff1b;二是有…

2023国赛数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 描述 …

AOPSpringAOP两种动态代理

1、什么是AOP 切面编程&#xff08;Aspect-Oriented Programming&#xff0c;AOP&#xff09;是一种软件开发方法&#xff0c;旨在通过分离关注点&#xff08;Concerns&#xff09;来增强代码的模块性、可维护性和可重用性。 AOP 是 OOP 的延续&#xff0c;是软件开发中的一个…

【Qt高阶】老Qt都不一定清楚的“QObject线程亲和性”【2023.08.13】

老Qt都不一定清楚的“线程亲和性” 与题目无关 感觉自己还挺2&#xff0c;有粉丝点了那个契约者会给up发个鼓励的话&#xff0c;我还以为是人私信发的&#xff0c;都挨个感谢了&#xff0c;后来才意识到是系统自动发的&#x1f623;&#x1f623;&#x1f623;。 自上上期视频对…

⛳ Java集合框架

目录 ⛳ Java集合框架&#x1f3a8; 一、概述&#x1f3ed; 二、Iterator接口&#x1f4ad; 2.1、基础用法&#x1f69c; 2.2、原理&#x1f43e; 2.3、为什么需要iterator接口☁ 2.4、ListIterator接口&#x1f4e2; 2.5、iterator在集合中的实现例子2.5.1、Iterator在ArrayLi…

潜水减压多普勒超声气泡信号识别方法

用三参量模糊分析法识别潜水减压气泡信号的研究 摘要 三参量模糊分析法。建立了 f-p-Δp( 频率、谱峰、峰差) 三参量模糊分析法&#xff0c;综合气泡原本特征以及背景噪声计算评分以识别气泡&#xff0c;最后给予 SPENCERⅠ &#xff5e; Ⅲ分级原理和方法 减压气泡信号的能量…

分布式 - 消息队列Kafka:Kafka生产者发送消息的方式

文章目录 1. Kafka 生产者2. kafaka 命令行操作3. kafka 生产者发送消息流程4. Kafka 生产者的创建5. Kafka 生产者发送消息1. 发送即忘记2. 同步发送3. 异步发送 6. Kafka 消息对象 ProducerRecord 1. Kafka 生产者 不管是把Kafka作为消息队列、消息总线还是数据存储平台&…

Vue3组件库

Vue3组件库 ViteVue3TypescriptTSX 1、项目搭建 1.1、创建项目&#xff08;yarn&#xff09; D:\WebstromProject>yarn create vite yarn create v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh p…

asyncio是什么?

如果把进程比作从A处到B处去这件事&#xff0c;那么线程就是可供选择的多条道路&#xff0c;协程就是道路上特殊路段&#xff08;类似限速&#xff0c;一整条道路都是特殊路段的话&#xff0c;就是全部由协程实现&#xff09; 例图如下&#xff1a; 1. 什么是协程&#xff08…

FPGA应用学习笔记----CORDIC 算法和小结

加减移位操作来运算三角函数&#xff0c;开根号&#xff0c;求对数 圆周旋转模式

沁恒ch32V208处理器开发(四)串口通信

目录 串口资源资源配置同步模式单线半双工模式中断DMA 串口的初始化串口通信的实现 串口资源 资源配置 CH32V208 系列&#xff0c;是基于 RISC-V 指令架构设计的 32 位 RISC 内核 MCU&#xff0c;根据封装的不同&#xff0c;可用的USART串口资源如下表所示&#xff1a; 且US…

完美解决Github提交PR后报错:File is not gofumpt-ed (gofumpt)

问题阐述 最近在Github上提交PR后&#xff0c;遇到了这么一个问题&#xff1a;golangci-lint运行失败&#xff0c;具体原因是File is not gofumpt-ed (gofumpt)。 名词解释 golangci-lint&#xff1a; golangci-lint 是Go语言社区中常用的代码质量检查工具&#xff0c;它可以…

阿里云弹性裸金属服务器详细介绍(原神龙)

阿里云弹性裸金属服务器&#xff08;ECS Bare Metal Server&#xff09;是一种可弹性伸缩的高性能计算服务&#xff0c;原神龙服务器&#xff0c;计算性能与传统物理机无差别&#xff0c;具有安全物理隔离的特点&#xff0c;裸金属服务器分钟级的交付周期。阿里云服务器网分享阿…

现代控制理论step()函数使用方法,多输入多输出系统的阶跃响应图如何只输出一个输入对应输出的阶跃响应图(step(sys)如何单独显示一个子图)

多输入多输出系统的阶跃响应图 考虑以下二阶状态空间模型: A [-0.5572,-0.7814;0.7814,0]; B [1,-1;0,2]; C [1.9691,6.4493]; sys ss(A,B,C,0);这个模型有两个输入和一个输出&#xff0c;因此它有两个通道: 从第一个输入到输出&#xff0c;从第二个输入到输出。每个通道都…

ArcGIS Maps SDK for JavaScript系列之一:在Vue3中加载ArcGIS地图

目录 ArcGIS Maps SDK for JavaScript简介ArcGIS Maps SDK for JavaScript 4.x 的主要特点和功能AMD modules 和 ES modules两种方式比较Vue3中使用ArcGIS Maps SDK for JavaScript的步骤创建 Vue 3 项目安装 ArcGIS Maps SDK for JavaScript创建地图组件 ArcGIS Maps SDK for …

使用 vpn 后 git clone 无法下载项目

使用VPN后 git clone 命令无法下载项目 偶发使用 vpn 后 git clone 项目会卡住&#xff0c;或者报 timeout 错误 当我使用ping github.com是可以ping通的&#xff0c;但是 clone 项目就会卡住。去搜了一番发现&#xff1a; git 工具在使用代理后需要设置 git https.proxy 属…

Linux学习之awk数组

数组的定义&#xff1a; 数组是一种有关联关系的变量&#xff0c;通过下标依次访问。 数组名[下标] 值&#xff0c;下标可以使用数字也可以使用字符串。 数组的遍历&#xff1a; for(变量 in 数组名){ 数组名[变量] 操作 } 数组删除&#xff1a; delete 数组名&#xff0c;就可…