证书链的基本原理
- 证书链: 由一串数字证书链接而成
1、数字证书
-
数字证书: 用来认证
公钥持有者
身份合法性
的电子文档,以防止第三方冒充行为。 -
由
CA
(Certifacate Authority) 负责签发, -
关键内容:
颁发者
、证书有效期
、使用者组织
、使用者公钥
等信息。
PKI
(Public Key Infrastructure) 规范体系,包含:
-
数字证书格式定义
-
密钥生命周期管理
-
数字签名及验证
问题:
-
CA 是如何签发一张证书?
-
使用者如何验证证书?
数字签名技术: 基于公钥密码技术。
-
现实世界,签名: 表示
承诺
,手段是手写签字
或盖扣印章
; -
数字世界,签名: 表示
承诺
,手段是二进制
。
CA 数字签名
两个过程:
-
签发证书(Signing)
-
验证证书(Verification)
数字签名与验证
签发证书的过程
- 撰写证书
元数据
:签发人(Issuer)
、地址
、签发时间
、有效期
等,证书持有者(Owner)基本信息
,比如DN(DNS Name,即证书生效的域名)
、Owner 公钥
等
- 使用通用的
Hash 算法
(如SHA-256
)对证书元数据计算生成数字摘要
- 使用
Issuer 的私钥
对该数字摘要
进行加密
,生成一个加密的数字摘要
,也就是Issuer的 数字签名
- 将数字签名
附加到数字证书
上,变成一个签过名的
数字证书 - 将
签过名的数字证书
与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
这个层次可以抽象为三个级别:
-
end-user
:即 baidu.com,该证书包含百度的公钥
,访问者就是使用该公钥将数据加密后再传输给百度,即在 HTTPS 中使用的证书 -
intermediates
:即上文提到的签发人 Issuer
,用来认证公钥持有者身份
的证书,负责确认 HTTPS 使用的end-user 证书
确实是来源
于百度。这类 intermediates 证书可以有很多级,也就是说 签发人 Issuer 可能会有有很多级 -
root
:可以理解为 最高级别的签发人 Issuer,负责认证intermediates 身份
的合法性
这个信任链条
,最终目的是保证 end-user 证书``可信
,公钥``可信
。
证书链
结合实际的使用场景对证书链进行一个归纳:
-
为了获取 end-user 的公钥,需要获取 end-user 的证书,因为公钥就保存在该证书中
-
为了证明获取到的 end-user 证书是可信的,就要看该证书是否被 intermediate 权威机构认证,等价于是否有权威机构的数字签名
-
有了权威机构的数字签名,而权威机构就是可信的吗?需要继续往上验证,即查看是否存在上一级权威认证机构的数字签名
-
信任链条的终点是
Root CA
,采用自签名
,对他的签名只能无条件信任
证书链逐级认证
无条件信任
,尤瓦尔赫拉里在《人类简史》中已经阐述过,基于虚构故事所建立的信任
,最终将人类带到了今天。
Root 根证书从何而来呢?
-
自行下载安装
-
Trusted Root Certificates
:浏览器
、操作系统
等内置
Root 根证书
。
如 Apple MacOS 官网就记录了操作系统中内置的可信任根证书列表。
macOS High Sierra 中可用的受信任根证书列表
参考: What is the SSL Certificate Chain?
-
数字证书是一种
普遍使用
的身份认证方式, -
另外一种认证方式,
基于身份标识
,和PKI竞争的IBC
(Identity-Based Cryptography)体系正在兴起