CA证书及PKI

文章目录

  • 概述
  • 非对称加密
    • User Case: 数据加密
    • User Case: 签名验证
    • 潜在问题
  • CA
    • CA证书的组成
    • CA签发证书流程
    • CA验证签名流程
    • CA吊销证书流程
  • PKI
    • 信任链
    • 证书链

概述

首先我们需要简单对证书有一个基本的概念,以几个问题进入了解

证书是一种电子文档(可以理解为网络世界的身份证),用于在通信双方时验证对方的身份,它包含了证书持有者的信息,公钥以及由可信第三方(称为证书颁发机构,CA)对这些信息的数字签名

在这里插入图片描述

证书的在网络安全通信中作用极大:

  • 身份验证: 证书用于验证通信双方的身份,通过证书可以确认对方是可信的,从而防止身份伪造和中间人攻击
  • 数据加密:证书包含的公钥用于加密数据,从而确保数据在传输过长中不被窃听和篡改,只有持有相应私钥的接收方来解密这些数据
  • 数字签名:证书用于对数据进行数字签名,以确保数据的完整性和不可否认性。数字签名可以证明数据在传输过程中未被篡改,且签名确实来自签名者
  • 安全通信:证书在安全协议(如SSL/TLS)中起着至关重要的作用。这些协议通过使用证书来建立安全的通信通道,保护数据的机密性和完整性
  • 信任建立:证书通过公钥基础设施(PKI)来建立信任链。根证书由权威的CA签发,任何经过根证书认证的证书都被认为是可信的,从而形成一个信任体系。

非对称加密

非对称加密在证书中扮演了非常重要的角色,甚至可以说是为了非对称加密这瓶醋才包了证书这盘饺子

公钥:可以向任何人公开,发送方使用接收方的公钥来加密消息

私钥:仅归自己所有,不可被公开,接收方使用自己的私钥来解密发送方加密的消息,只有拥有正确私钥的人才能解密由其公钥加密的数据。

在这里插入图片描述

User Case: 数据加密

公钥和私钥在数据加密中使用流程如下,图片十分清晰,我们不再赘述

在这里插入图片描述

User Case: 签名验证

在这里插入图片描述

辅助上图,描述下整体流程(我们以Server代发送方,Client代接收方):

  • Server生成数据签名流程
    1. Server对原始数据(文件或消息)使用Hash函数生成一个固定长度的hash值
    2. Server使用自己的私钥加密hash值
    3. Server添加证书或TimeStamp与hash值一起生产一个数字签名
    4. 发布数字签名
  • Client验证签名流程
    1. Client接受到 原始数据 和 附加的数字签名
    2. Client对 原始数据应用相同的散列函数,生成一个新的hash值 用于与签名中的hash值进行比较
    3. Client使用Server发布的公钥解密数字签名,获得Server端生成的hash值
    4. Client对比两个hash值(Client生产的和Server生产的),如果hash值一致则能确定数据未被篡改

潜在问题

公钥私钥已经保证了一定的安全性

发送者使用数字签名来认证自己

client验证身份后,双方在对称加密和hash算法保护的安全信道上发送消息

例如:如果Server和Client发送数字签名时,数据被中间人截获,导致最终发送给Client的数据是中间人生成的签名怎么办呢?

在这里插入图片描述

解决方案是: 找个三方提前证明下Sender的身份,CA应运而生

在这里插入图片描述

CA

CA全称Certificate Authority,是一个受信的第三方机构,负责管理和签发证书,可类比理解为颁发身份证的官方机构

需要证书的S向CA申请签发证书,CA验证证书申请人S的身份并颁发含有S公钥的证书,然后,CA将使用自己的私钥对颁发的证书进行数字签名,以建立对证书的有效性的信任(即获得证书方可以通过CA签名确认签发机构是否合法)

CA证书的组成

一个证书主要由三大部分组成:申请者与颁发者信息,申请者公钥,CA签名

明文:申请者公钥,申请者的组织信息和个人信息,签发机构CA的信息,证书有效时间,证书序列号等信息

密文:CA数字签名

以下是google签发的一个证书样例:

在这里插入图片描述

CA签发证书流程

以下以Server代证书申请人

申请者生成密钥对
创建证书签名请求CSR
提交CSR给CA
CA验证申请者身份
身份验证通过?
生成证书
CA使用私钥签名证书
分发证书给申请者
发布证书到证书库
拒绝申请并通知申请者
  1. Server生成自己的一对公钥和私钥,私钥一般由Server独自控制和拥有,但某些情况下,私钥可能会在颁发CA控制的硬件安全模块(HSM)中生成并安全存储
  2. Server向CA发送包含其公钥和其他识别详细信息的证书签名请求(CSR)
  3. CA采取措施验证Server的身份和在CSR中申领凭证的权力(如Server的域名是否有效或电子邮件证书的电子邮件地址是否有效),即确认提交的CSR确实由Server创建
  4. CA验证成功Server身份,为Server颁发包含CSR详细信息和公钥的证书。同时CA将使用自己的私钥对颁发的证书进行数字签名,并且将新签证书发布到证书库,以便其他用户和系统能够验证其有效性

CA验证签名流程

以下以Client代证书申请验证人

  1. Client向Server首次建立通信时,Server返回被签发的证书
  2. Client读取证书中相关明文的信息(明文中含有CA签名的Hash算法),Client采用相同的Hash算法计算明文信息的info digest,然后使用CA的公钥解密签名数据,对比证书的加密的info digest,如果一致,则可以确认证书的合法性
  3. Client验证证书相关的域名信息,有效时间等信息
  4. Client会内置安装CA本身的证书信息(由CA自签发),如果CA不被信任,Client找不到对应的CA证书,证书也会判定为非法

CA吊销证书流程

证书超过有效期时,证书就不再有效或不可信,证书持有者或第三方(如系统管理员)就会向CA提交吊销证书请求

CA也会通过自动检测(如发现私钥泄露,证书被滥用等)发起吊销流程

接收吊销请求
验证吊销请求
验证通过?
记录吊销信息
拒绝吊销请求并通知请求方
更新CRL
更新OCSP数据
发布更新后的CRL
通知证书持有者
通知依赖方
  1. CA验证吊销请求的真实性和合法性,可能包括身份验证、关联凭证检查等。

  2. CA在内部数据库中记录证书的吊销信息,包括吊销日期和原因

  3. CA更新证书吊销列表(CRL),将被吊销的证书信息添加到CRL中

  4. CA定期发布更新后的CRL,使依赖方(如客户端、服务器)能够获取最新的吊销信息

  5. CA更新在线证书状态协议(OCSP)响应数据,确保实时查询能够返回最新的吊销状态

  6. CA通知证书持有者其证书已被吊销,说明吊销原因和后续步骤

    CA可能通过公告或直接通知相关依赖方,确保其知晓证书吊销信息。

PKI

PKI 全称Public Key Infrastructure, 是一组构成加密框架的技术和流程,可以理解为PKI为减轻CA的负担搭建的一套以CA为核心的服务框架扩展,从而实现更系统化,标准化和大规模管理数字证书

PKI主要包含以下几部分

在这里插入图片描述

  • CA:这里的CA专职颁发,存储和签署数字证书

  • RA:RA分担了原来CA的功能,专门负责审查证书申请者的身份,判断是否同意CA向申请者签发证书

  • VA: Validation Authority, 由于证书具有有效期,VA负责的是证书状态的实时验证,以下简述VA的工作流程

    1. VA定期从CA下载最新的证书吊销列表(CRL)和获取实时证书状态并存储在本地数据库
    2. Client发起证书验证请求(OCSP 在线证书状态协议),请求中包含要验证证书的唯一标识,OCSP请求会发送至VA的OCSP服务器
    3. VA解析请求内容,提取出待验证证书信息,查询本地数据库获取证书状态
    4. 根据查询结果生成OCSP响应并用自己的私钥对响应签名,确保响应的完整性和可信性
    5. 客户端拿到响应,根据证书状态确定下一步操作
    发送OCSP请求
    发送OCSP响应
    有效
    吊销
    未知
    客户端生成OCSP请求
    VA接收并解析请求
    VA查询证书状态
    生成OCSP响应
    VA用私钥签名响应
    客户端接收并验证响应
    证书状态
    继续通信
    中止通信
    安全措施

    CA会定期向VA发送更新的证书撤销清单(CRL)

    接收方会将接收到的证书发送给VA,由VA进行验证证书是否依旧处于有效期

信任链

由于数字证书的广泛应用,CA机构的需求也随之上升,从而引入了中间证书,通俗的理解为 较大的公司(根CA)验证过一些可信的小公司(子CA),授权这些小公司也可签发证书。

PKI中出现了信任链的概念,信任链是指通过一系列信任关系建立的信任路径,从根证书(Root Certificate)到最终用户证书(End-Entity Certificate),信任链的核心思想是,如果你信任链中的每一个证书,那么你就可以信任链中的所有证书。

在这里插入图片描述

信任链所带来的好处:

  • 安全性:根证书至关重要,信任链减少了根证书的直接使用,转而由中间证书来签署最终用户证书,可以降低根证书的风险,增强了整个PKI体系的安全性
  • 灵活性:引入中间证书后,CA可以更灵活地管理和更新证书。如果某个中间证书出现问题或需要更换,只需替换中间证书而不影响根证书和最终用户证书的信任关系。
  • 可扩展性:随着数字证书的应用范围不断扩大,需要不断添加新的证书颁发机构(CA)。信任链的存在使得可以方便地添加新的中间证书,扩展PKI体系而不影响现有的信任结构。
  • 透明性:信任链清晰地展示了证书的层级关系和信任路径,使数字证书的验证过程更加透明和可理解。通过查看证书链,可以了解到证书的签发者和信任关系,从而更好地评估证书的可信度

证书链

证书链是信任链的具体实现,Client在验证证书时,如果认为当前证书不可性,可以从最终用户证书开始,逐级上溯到根证书进行验证。

证书链体现的是证书的层级关系,每一级CA的证书都是由上一级CA签发,最顶层的根证书是自签名的(即自己签发),证书链包括了最终用户证书、中间证书和根证书

在这里插入图片描述

🐖:根证书预安装在客户端操作系统和浏览器中,通常由大型受信任CA签发,如果根证书被信任,所有由其签发的中间证书和最终用户证书也会被信任。

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

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

相关文章

福利|免费申请长期单域名、通配符、多域名SSL证书,不限量

一、什么是单域名、通配符、多域名SSL证书 单域名证书:仅保护一个特定的域名。 通配符证书:保护一个主域名及其所有二级子域名。 多域名证书:在同一张证书中保护多个不同的域名,可以是主域名也可以是子域名,域名之间…

目前比较好用的LabVIEW架构及其选择

LabVIEW提供了多种架构供开发者选择,以满足不同类型项目的需求。选择合适的架构不仅可以提高开发效率,还能确保项目的稳定性和可维护性。本文将介绍几种常用的LabVIEW架构,并根据不同项目需求和个人习惯提供选择建议。 常用LabVIEW架构 1. …

Invalid keystore format,获取安全码SHA1值出错

AndroidStudio版本:Android Studio Electric Eel | 2022.1.1 项目运行JDK版本:11.0.15,查看方法如下: 在Terminal 窗口中,获取的Java版本是:1.8.0,修改Java系统环境变量,改成&#…

如何在MySQL中创建不同的索引和用途?

目录 1 基本的 CREATE INDEX 语法 2 创建单列索引 3 创建多列索引 4 创建唯一索引 5 创建全文索引 6 在表创建时添加索引 7 使用 ALTER TABLE 添加索引 8 删除索引 9 索引管理的最佳实践 10 示例 在 MySQL 中,索引(index)是一种用于…

Git保姆级教程

目录 Git是什么,为什么要学这个工具? 码云注册并创建仓库 Git安装 查看本地仓库状态 添加到暂存区 提交到本地库 修改文件 版本回退 创建、切换和删除分支 合并分支 克隆远端库到本地 将本地库推送到远端库 命令设置别名 Git是什么&#xf…

远程咨询的好处都有哪些呢?

随着科技的飞速发展,远程咨询正逐渐成为人们获取医疗服务的一种新方式。那么什么是远程咨询呢?其又有哪些好处呢?下面就给大家详细地说说。 远程咨询的概念 远程咨询,顾名思义,是指通过互联网技术,实现患…

LeetCode 746.使用最小花费爬楼梯

题目: 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费…

使用try-catch捕获异常到底会不会影响性能?尤其是try-catch还比较多的情况下?

从字节码层面来看,没抛错两者的执行效率其实没啥差别。 “那为什么网上流传着try-catch会有性能问题的说法啊? 这个说法确实有,在《Effective Java》这本书里就提到了 try-catch 性能问题: 总结: 1、try-catch 相比较…

C++ STL std::map的实现机制【面试】

基于红黑树:std::map 利用红黑树的数据结构来存储数据,确保了操作的平衡性和效率。 自动排序:红黑树保证了元素的有序性,即元素会根据键自动排序。 唯一键值:每个键都是唯一的,如果尝试插入重复的键&…

联想测开一面(电话面试)笔试60%

3.21 无自我介绍基本问项目,问实习对python自动化测试了解多少讲一下python中打包和解包的概念学校无测试相关课程,平时用什么平台去学习的计算机底层实现原理简要说说(软硬结合)大致讲一下了解的C的一些数据结构C指针和数组的区…

【TensorFlow深度学习】DQN(Deep Q-Network)算法详解

DQN(Deep Q-Network)算法详解 DQN(Deep Q-Network)算法详解:深度强化学习的里程碑DQN算法原理代码实现结语 DQN(Deep Q-Network)算法详解:深度强化学习的里程碑 在强化学习的浩瀚宇…

汇编:数组数据传送

要在32位汇编中实现数组数据的传送,可以使用字符串操作指令 MOVS 以及其前缀 REP,可以高效地复制数组数据。 MOVS 指令是一种字符串操作指令,用于将数据从源地址移动到目标地址。MOVS 指令有不同的变种,可以处理不同大小的数据&a…

水印怎么去除?Windows 上的最佳水印软件

我们都知道,任何水印软件都可以防止您的数字财产被盗。此外,水印是一种虚拟营销元素,可以帮助您推广您的作品。 奇客水印管家是 Internet 上适用于 Windows 7、8 、10 和 11 的最高效的水印软件。此外,它还允许用户通过添加或删除…

计算机基础之:UMA与NUMA区别

基础 UMA(Uniform Memory Access)与NUMA(Non-Uniform Memory Access)是两种不同的内存架构设计,主要应用于多处理器系统中,它们的主要区别在于内存访问的效率和方式: UMA(Uniform …

【C++】环境搭建及基本工作流程

C 当你需要写性能良好的代码时,C仍是不二选择 如果你想访问硬件、如果你想对硬件进行控制,C仍是首选。 所有的游戏引擎都是用C编写的,因为C可以直接控制硬件。 原理: C代码-->编译器编译comple-->目标平台的机器码-->放…

锂电池危险特性分类鉴别 危险品危险特性分类鉴别报告怎么申请

锂电池危险特性分类鉴别报告的办理流程 锂电池危险特性分类鉴别报告是用于确定锂电池及其产品对应的运输危险品分类,判断是否符合国际公认的危险品分类标准的报告。办理此类报告的流程通常包括以下几个步骤: 提供样品及测试需求:需要提供样品…

java如何实现字符串连接

在java中,字符串与字符串连接可以用运算符和 比如有字符串a,字符串b 想要把a和b连接起来,定义一个字符串变量c cab 或者 ab 示例代码 public class Zifuchuanlianjie {public static void main(String[] args) {String a"我叫李狗蛋";S…

【名词解释】Unity中的Scrollbar组件及其使用示例

Unity是一个广泛使用的跨平台游戏开发引擎,它提供了许多内置的UI组件,其中就包括Scrollbar组件。下面是对Scrollbar组件的名词解释和使用方法的代码示例。 名词解释 Scrollbar组件是Unity UI系统中的一个UI控件,用于实现滚动功能。它通常由…

16.左侧导航菜单制作

左侧导航菜单制作 1. 修改路由&#xff0c;方便查看页面 index.ts import { RouteRecordRaw, createRouter, createWebHistory } from "vue-router"; import Layout from /layout/Index.vueconst routes: Array<RouteRecordRaw> [{path: /,name: home,comp…

【SpringCloud学习笔记】Elasticsearch

1. Elasticsearch 1.1 安装ES 启动Docker&#xff1a;service docker restart / systemctl restart docker基于Docker创建网络docker network create hm-net向云服务器上传elasticsearch以及kibana的tar包&#xff0c;并使用docker load -i xxx.tar进行加载使用如下命令启动e…