证书链的基本原理

证书链的基本原理

  • 证书链: 由一串数字证书链接而成

1、数字证书

  • 数字证书: 用来认证公钥持有者身份合法性的电子文档,以防止第三方冒充行为。

  • CA(Certifacate Authority) 负责签发,

  • 关键内容: 颁发者证书有效期使用者组织使用者公钥 等信息。

PKI(Public Key Infrastructure) 规范体系,包含:

  • 数字证书格式定义

  • 密钥生命周期管理

  • 数字签名及验证

问题:

  • CA 是如何签发一张证书?

  • 使用者如何验证证书?

数字签名技术: 基于公钥密码技术。

  • 现实世界,签名: 表示承诺,手段是手写签字盖扣印章

  • 数字世界,签名: 表示承诺,手段是二进制

CA 数字签名两个过程:

  • 签发证书(Signing)

  • 验证证书(Verification)
    在这里插入图片描述

数字签名与验证

签发证书的过程
  1. 撰写证书元数据
    • 签发人(Issuer)地址签发时间有效期 等,
    • 证书持有者(Owner)基本信息,比如 DN(DNS Name,即证书生效的域名)Owner 公钥
  2. 使用通用的 Hash 算法(如SHA-256)对证书元数据计算生成 数字摘要
  3. 使用Issuer 的私钥对该数字摘要进行加密,生成一个加密的数字摘要,也就是Issuer的 数字签名
  4. 将数字签名附加到数字证书上,变成一个 签过名的数字证书
  5. 签过名的数字证书Issuer 的公钥,一同发给证书使用者
    (注意,将公钥主动发给使用者是一个形象的说法,只是为了表达使用者最终获取到了 Issuer 的公钥)
验证证书的过程

证书使用者获通过某种途径(如浏览器访问)获取到该数字证书解压后分别获得 证书元数据数字签名
使用同样的Hash算法计算证书元数据数字摘要
使用 Issuer 的公钥 对数字签名进行解密,得到 解密后的数字摘要
对比 2 和 3 两个步骤得到的数字摘要值,如果相同,说明数字证书确实是被Issuer 验证过合法证书,证书中的信息(最主要的是 Owner 的公钥)是可信
上述是对数字证书的签名和验证过程,

利用同样的方法对普通数据数字签名验证

总结“签发证书”与“验证证书”两个过程:

  • Issuer(CA)使用 Issuer 的私钥 对签发的证书进行数字签名

  • 证书使用者使用 Issuser 的公钥 校验证书,通过,说明证书可信。

校验的关键是 Issuer 的公钥,使用者获取不到 Issuer 的私钥,只能获取到 Issuer 的公钥.

问题:

  • 如果 Issuer 是一个坏家伙,谁来证明 Issuer 的身份 是可信的?

这涉及到一个信任链条(证书链)

2、证书链是什么

以百度为例,在浏览器上访问 “www.baidu.com” 域名,地址栏左侧有一个小锁的标志,点击就能查看百度的数字证书,如下图所示(使用的是Edge浏览器)
在这里插入图片描述

百度数字证书
在图片的顶部,我们看到这样一个层次关系:

GlobalSign Root CA -> GlobalSign Organization Validation CA -> baidu.com

这个层次可以抽象为三个级别:

  1. end-user:即 baidu.com,该证书包含百度的公钥,访问者就是使用该公钥将数据加密后再传输给百度,即在 HTTPS 中使用的证书

  2. intermediates:即上文提到的 签发人 Issuer,用来认证公钥持有者身份的证书,负责确认 HTTPS 使用的 end-user 证书确实是来源于百度。这类 intermediates 证书可以有很多级,也就是说 签发人 Issuer 可能会有有很多级

  3. root:可以理解为 最高级别的签发人 Issuer,负责认证 intermediates 身份的合法性

这个信任链条,最终目的是保证 end-user 证书``可信公钥``可信

在这里插入图片描述

证书链

结合实际的使用场景对证书链进行一个归纳:

  1. 为了获取 end-user 的公钥,需要获取 end-user 的证书,因为公钥就保存在该证书中

  2. 为了证明获取到的 end-user 证书是可信的,就要看该证书是否被 intermediate 权威机构认证,等价于是否有权威机构的数字签名

  3. 有了权威机构的数字签名,而权威机构就是可信的吗?需要继续往上验证,即查看是否存在上一级权威认证机构的数字签名

  4. 信任链条的终点是Root CA,采用自签名,对他的签名只能无条件信任

证书链逐级认证

无条件信任,尤瓦尔赫拉里在《人类简史》中已经阐述过,基于虚构故事所建立的信任,最终将人类带到了今天。

Root 根证书从何而来呢?

  • 自行下载安装

  • Trusted Root Certificates: 浏览器操作系统内置 Root 根证书

如 Apple MacOS 官网就记录了操作系统中内置的可信任根证书列表。

macOS High Sierra 中可用的受信任根证书列表

参考: What is the SSL Certificate Chain?

  • 数字证书是一种普遍使用的身份认证方式,

  • 另外一种认证方式,基于身份标识,和PKI竞争的IBC(Identity-Based Cryptography)体系正在兴起

  • 7
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenSSL是一个开放源代码的加密工具包,可以用来进行SSL/TLS协议的实现。在使用OpenSSL操作证书时,可以采取以下步骤: 1.生成私钥和证书请求:首先,使用OpenSSL生成一个私钥和一个证书请求(CSR)。私钥用来签署证书,而CSR包含了申请者的公钥信息。 2.自签名证书:接下来,使用生成的私钥和CSR生成一个自签名证书。自签名证书可以用于测试或者临时环境,但在生产环境中,应该使用由受信任的第三方机构签名的证书。 3.签名证书:如果要获得第三方机构签名的证书,需要将CSR发送给证书颁发机构(CA)。CA会对CSR进行验证,并使用CA的私钥签名生成一个证书。这个证书可以用来在客户端与服务器之间建立信任。 4.构建证书证书是由证书和根证书构成的一条验证路径。在OpenSSL中,可以通过将证书和根证书连接在一起来构建证书。同时,还需要将每个证书保存为单独的文件,以便于使用。 5.验证证书:在服务端和客户端之间建立连接时,服务器需要将证书发送给客户端。客户端使用CA的公钥来验证证书的有效性。如果证书中的任何一个证书无效或不受信任,连接将被中断。 通过以上步骤,我们可以使用OpenSSL操作证书。这样可以确保在SSL/TLS连接中建立起合法且可信的通信路径,保证通信的安全性和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值