CA证书及PKI

文章目录

概述

首先我们需要简单对证书有一个基本的概念,以几个问题进入了解
| ❓ Question1: 什么是证书?

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


| ❓ Question2: 为什么需要证书?

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

  • 身份验证: 证书用于验证通信双方的身份,通过证书可以确认对方是可信的,从而防止身份伪造和中间人攻击
  • 数据加密:证书包含的公钥用于加密数据,从而确保数据在传输过长中不被窃听和篡改,只有持有相应私钥的接收方来解密这些数据
  • 数字签名:证书用于对数据进行数字签名,以确保数据的完整性和不可否认性。数字签名可以证明数据在传输过程中未被篡改,且签名确实来自签名者
  • 安全通信:证书在安全协议(如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算法保护的安全信道上发送消息
| ❓ 但是,Client如何确定sender是可信的呢?

例如:如果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签发,如果根证书被信任,所有由其签发的中间证书和最终用户证书也会被信任。

相关推荐
hzyyyyyyyu1 小时前
内网安全隧道搭建-ngrok-frp-nps-sapp
服务器·网络·安全
刽子手发艺2 小时前
WebSocket详解、WebSocket入门案例
网络·websocket·网络协议
速盾cdn6 小时前
速盾:CDN是否支持屏蔽IP?
网络·网络协议·tcp/ip
yaoxin5211236 小时前
第二十七章 TCP 客户端 服务器通信 - 连接管理
服务器·网络·tcp/ip
内核程序员kevin6 小时前
TCP Listen 队列详解与优化指南
linux·网络·tcp/ip
PersistJiao7 小时前
Spark 分布式计算中网络传输和序列化的关系(一)
大数据·网络·spark
黑客Ash10 小时前
【D01】网络安全概论
网络·安全·web安全·php
->yjy10 小时前
计算机网络(第一章)
网络·计算机网络·php
摘星星ʕ•̫͡•ʔ11 小时前
计算机网络 第三章:数据链路层(关于争用期的超详细内容)
网络·计算机网络