当前位置: 首页 > news >正文

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机构的公钥、签名算法等等。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

Https、CA证书、数字签名

Https Http协议 Http协议是目前应用比较多应用层协议,浏览器对于Http协议已经实现。Http协议基本的构成部分有 请求行 : 请求报文的第一行请求头 : 从第二行开始为请求头内容的开始部分。每一个请求头都是由K-V键值对组成。请求体&#xf…...

Jmeter-压测时接口按照顺序执行-临界部分控制器

文章目录 临界部分控制器存在问题 临界部分控制器 在进行压力测试时,需要按照顺序进行压测,比如按照接口1、接口2、接口3、接口4 进行执行 查询结果是很混乱的,如果请求次数少,可能会按照顺序执行,但是随着次数增加&a…...

linux 文件权限识别及其修改

一、文件权限认识 在 Linux 系统中,一切皆文件,目录也是一种文件形式叫目录文件,它们的属性主要包含:索引节点(inode),类型、权限属性、链接数、所归属的用户和用户组、最近修改时间等内容。 如下为根目录下目录&…...

Java:简单算法:冒泡排序、选择排序、二分查找

冒泡排序 // 1、准备一个数组 int[] arr {5&#xff0c;2&#xff0c;3&#xff0c;1};//2、定义一个循环控制排几轮 for (int i 0; i < arr.length - 1; i) { // i 0 1 2 【5&#xff0c;2&#xff0c;3&#xff0c;1】 次数 // i 0 第一轮 0 1 2 …...

C、C++项目中 configure、makefile.am、makefile.in、makefile 之间的关系

一、configure、makefile.am、makefile.in、makefile 之间的关系 这四个文件都是与 GNU Make&#xff08;一个用于管理程序的编译和安装过程的工具&#xff09;有关的文件&#xff0c;它们的关系如下&#xff1a; configure&#xff1a;是一个脚本文件&#xff0c;用于根据系统…...

【网络】传输层——UDP | TCP(协议格式确认应答超时重传连接管理)

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 现在是传输层&#xff0c;在应用层中的报文(报头 有效载荷)就不能被叫做报文了&#xff0c;而是叫做数…...

198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

198.打家劫舍 class Solution { public:int rob(vector<int>& nums) {if(nums.size()0)return 0;if(nums.size()1)return nums[0];vector<int>dp(nums.size());dp[0]nums[0];dp[1]max(nums[0],nums[1]);for(int i2;i<nums.size();i)dp[i]max(dp[i-1],dp[i-…...

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 …...

服务器扩展未生效

服务器扩容未生效 在阿里云付费扩容后&#xff0c;在服务器里面看未生效。 阿里云->实例与镜像->实例->选择实例->云盘->扩容进入linux服务器查看&#xff1a; df -h vda1扩容未生效。原40g->扩容后100g 解决方法&#xff1a; 1、安装growpart yum inst…...

Jenkins构建自由风格项目发布jar到服务器

前面的文章有介绍 docker安装jenkins 和 dockerjenkins发布spring项目&#xff1b;这里就不做过多的介绍&#xff0c;直接说明构建步骤。 1、选择构建一个自由风格的项目 2、 选择丢弃旧的构建 3、配置Git信息 4、构建触发器 和 构建环境可以直接跳过 5、直接来到Build Step…...

Rabbitmq延迟消息

目录 一、延迟消息1.基于死信实现延迟消息1.1 消息的TTL&#xff08;Time To Live&#xff09;1.2 死信交换机 Dead Letter Exchanges1.3 代码实现 2.基于延迟插件实现延迟消息2.1 插件安装2.2 代码实现 3.基于延迟插件封装消息 一、延迟消息 延迟消息有两种实现方案&#xff…...

miniExcel 生成excel

一、nuget dotnet add package MiniExcel --version 1.31.2 二、新建表及数据 ExampleProducts 三、这里我用了Dapper.Query方法 读取excel public virtual async Task<IActionResult> Anonymous(){try{//using (var connection _dbContext.GetDbConnection())//{//…...

Handler详解

跟Handler有关系的&#xff0c;包括Thread&#xff0c;Looper&#xff0c;Handler&#xff0c;MessageQueue Looper: 由于Looper是android包加入的类&#xff0c;而Thread是java包的类&#xff0c;所以&#xff0c;想要为Thread创建一个Looper&#xff0c;需要在线程内部调用…...

Feign忽略Https的SSL最佳方案(且保证负载均衡将失效)

同时解决Https的SSL证书验证问题和feign不支持Patch请求方法的问题 代码 1. 工具类 OkHttpUtils.java import javax.net.ssl.*; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import j…...

Neo4j之SET基础

在 Neo4j 中&#xff0c;SET 语句用于更新节点或关系的属性。它允许你修改节点或关系的属性值&#xff0c;可以单独使用&#xff0c;也可以与其他查询语句&#xff08;如 MATCH、CREATE、MERGE 等&#xff09;一起使用。以下是一些使用 SET 语句的常见例子&#xff0c;以及它们…...

Redis 缓存过期及删除

一、Redis缓存过期策略 物理内存达到上限后&#xff0c;像磁盘空间申请虚拟内存(硬盘与内存的swap),甚至崩溃。 内存与硬盘交换 (swap) 虚拟内存&#xff0c;频繁I0 性能急剧下降&#xff0c;会造成redis内存急剧下降&#xff1b; 一般设置物理内存的3/4&#xff0c;在redis…...

万字长文·通俗易懂·一篇包掌握——输入/输出·文件操作(c语言超详细系列)(二)

前言&#xff1a;Hello&#xff0c;大家好&#x1f618;&#xff0c;我是心跳sy&#xff0c;上一节我们主要学习了格式化输入输出的基本内容&#xff0c;这一节我们对格式化进行更加深入的了解&#xff0c;对文件概念进行介绍&#xff0c;并且对输入、输出与文件读写的基本概念…...

【左神算法刷题班】第17节:在有序二维数组中查找目标值、等于目标字符串的子序列个数

第17节 题目1&#xff1a;在有序二维数组中查找目标值 给定一个每一行有序、每一列也有序&#xff0c;整体可能无序的二维数组 再给定一个数num&#xff0c; 返回二维数组中有没有num这个数 例子 数组如下&#xff0c;找 6 是否存在。 1 3 5 7 2 4 6 13 3 9 14 …...

【Terraform学习】本地变量(Terraform配置语言学习)

背景&#xff1a; 关于如何在机器上拉terraform代码&#xff0c;初始化就不重复了&#xff0c;需要的可以查看前面的文章&#xff1a; 【Terraform学习】Terraform-AWS部署快速入门&#xff08;快速入门&#xff09;_向往风的男子的博客-CSDN博客 使用本地变量命名资源 将每…...

zabbix自动注册服务器以及部署代理服务器

文章目录 Zabbix自动注册服务器及部署代理服务器一.zabbix自动注册1.什么是自动注册2.环境准备3.zabbix客户端配置4.在 Web 页面配置自动注册5.验证自动注册 二.部署 zabbix 代理服务器1.分布式监控的作用&#xff1a;2.环境部署3.代理服务器配置4.客户端配置5.web页面配置5.1 …...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...