交叉证书

简介: ## 证书4要素 pubkey(公钥) ,有一个其一一对应的私钥,由证书拥有者保存。 subject(名字),可以理解为证书的名字,你可以理解为 网站的域名。 issuer(颁发者的名字),即上级证书的subject。 signature(签名) ,上级证书使用私钥对当前证书进行签名的值。 ## 证书签名 假设 有 3 级 证书 ![image.png](
+关注继续查看

证书4要素

pubkey(公钥) ,有一个其一一对应的私钥,由证书拥有者保存。
subject(名字),可以理解为证书的名字,你可以理解为 网站的域名。
issuer(颁发者的名字),即上级证书的subject。
signature(签名) ,上级证书使用私钥对当前证书进行签名的值。

证书签名

假设 有 3 级 证书

image.png
首先 ,R1 CA证书 是由 R1证书签发,而www.taobao.com是由R1 CA证书签发。

签发过程核心就是签名,比如 签发R1 CA证书时,拿R1证书的私钥对R1 CA证书进行数字签名操作,签名的值添加在R1 CA证书中。同理签发www.taobao.com这张证书,是用 R1 CA证书的私钥对该证书进行数字签名,签名值添加在www.taobao.com的证书中。

被数字签名的值,是该证书的HASH。举个例子当 使用 R1证书加签R1 CA时,其签名值是 R1_privatekey_sign( HASH(R1 CA) )。

数字证书校验

由于 私钥签名的数据,可以使用公钥校验,假设我们信任R1 + R1 CA证书,我们收到www.taobao.com这个证书,如何校验?

首先,构造证书链,即 拿 server的证书然后和本地(操作系统或者浏览器内置)的可信证书进行上级证书的查找,一般通issuer字段查找(还有通过keyid的方式,这里不讨论),比如 www.taobao.com的证书的issuer是R1 CA,那么在本地仓库里面找R1 CA,接着找R1 CA的上级证书,直到找到最高一级的证书,即R1证书。

第二步,光靠名字来找上级是不够的,因为名字可以伪造,我们还需要对证书的签名值进行校验,我们知道,私钥签名的数据可以使用公钥来校验,所以,首先拿R1 CA证书的的公钥,去解开 www.taobao.com签名值,然后校验其值是否是www.taobao.com的hash,同理可以验证证书链中R1是否是R1 CA的上级证书。 签名校验成功,表明了2点
1:上下级关系正确
2:证书被未篡改,如果证书被篡改,使用上级证书的公钥解开当前证书后,会发现其值和当前证书的HASH值不一样

交叉证书

如果一个CA机构有如下2个受信的链:

image.png

那么又 R1 CA签发的证书只能由R1+R1 CA进行验证;视同 R3 CA签发的证书只能由R3+R3 CA进行签发。

但是有些客户端只有R1和R1 CA而没有R3以及R3 CA,而有些客户端只有R3和R3 CA而没有R1 以及 R1 CA ,我们能不能让证书有2条可以用来验证的链呢? 比如 www.taobao.com->...->R1 是一条证书链, www.taobao.com->...->R3 也算一条证书链,这样假设有些客户端只信任R1或者R3也能同时验证同一个证书。

为了达到这个目的,我们需要做这么一个操作,就是 使用 R1 对 R3进行签名生成一张叫做 R1-R3 的证书(即使用R1的私钥对R3进行签名)。

image.png

注意,R1-R3 拥有和 R3一模一样的 subject+公钥,和R3唯一的区别就是 R3是自签名证书,其issuer是R3自己,而 R1-R3 是中间证书,其issuer是R1。

接着,使用 R1-R3 来对 签发 www.taobao.com ,即 www.taobao.com 的 issuer 是R3(上面说了,issuer就是个字符串,和上级证书的subject一样,而R1-R3 这张证书的subject就是R3),这张 R1-R3 就是所谓的交叉证书corss-certificate

image.png

www.taobao.com 这样的证书,如何能让只信任R1的客户端进行验证:

1、构造证书链
服务器发送 www.taobao.com + R1 R3,客户端构造证书链,自然,通过找 www.taobao.com 的issuer:R3,在server发送的证书中找到了 R1 R3这张证书 ,通过 R1 R3 的issuer:R1,在本地找到了R1。
2、验证证书链
略,通上节一致,通过上级证书的公钥验证当前证书的签名值。

www.taobao.com 这样的证书,如何能让只信任R3的客户端进行验证:

1、构造证书链
服务器发送 www.taobao.com ,客户端构造证书链,自然,通过找 www.taobao.com 的issuer:R3,在本地找到了受信的R3 ,R3是根证书,证书链构造完成。

2、验证证书链
虽然,实际上 www.taobao.com 的证书是由 R1 R3这张证书签名的,但是上面说过,R1 R3这张证书的公钥和R3一样,也就意味着使用R1 R3的公钥,能够验证 www.taobao.com的签名值。

结尾

实际上,使用R1-R3www.taobao.com签名的效果,和使用R3www.taobao.com签名的效果是一模一样的,因为R1-R3R3拥有相同的subject以及公钥,自然拥有相同的私钥。

说的通俗一点,就是CA机构通过欺骗的方式,签了一张交叉证书,这张证书能够让客户端的证书链引导到R1。

交叉证书有什么作用?

1、兼容老设备。假设,老的客户端只支持R1根证书,但是我们的证书是R3是签名的,那需server发送交叉证书,来“引导”客户端使用R1校验。

2、CA机构合并,假设R1 收购了R3,R1为了“收回最终校验权”,可以生成这么一个交叉证书,那么使用R3签名的证书,最后都被R1来校验。

目录
相关文章
|
9天前
|
算法 安全 物联网
CFCA证书——基于SM2/3算法的安全信任
CFCA证书——基于SM2/3算法的安全信任
16 0
CFCA证书——基于SM2/3算法的安全信任
|
2月前
|
域名解析 安全 网络协议
如何获得免费的 SSL 证书?(真实有效)
俗话说“工欲善其事,必先利其器”,SSL证书作为保护网站数据传输安全的重要部分,我们在申请、签发、部署安装SSL证书的时候,可能会涉及到CSR文件生成、获取证书链、转换证书格式等需求,这时候有对应的工具就可提高工作效率。下面这几款SSL证书实用工具,不仅可在线使用,而且全都免费!
|
2月前
|
安全 搜索推荐 网络安全
|
5月前
|
Web App开发 机器学习/深度学习 安全
干货分享:可证明安全的隐私计算
干货分享:可证明安全的隐私计算
|
6月前
循环码生成矩阵与监督 (校验) 矩阵
循环码生成矩阵与监督 (校验) 矩阵
80 0
|
6月前
|
机器学习/深度学习
深度学习核对矩阵的维数对w权重矩阵的维数的计算
深度学习核对矩阵的维数对w权重矩阵的维数的计算
60 0
|
6月前
|
存储 Kubernetes 监控
CKA证书到底有什么用?考试流程是什么?
对于从事IT行业的技术人员来说,想要拿到丰厚的工资,获得好的岗位,除了拥有过硬的技术之外,还需要考取高含金量的证书。
|
8月前
|
存储 算法 安全
同态随机基加密的量子多方密码-数学公式
同态随机基加密的量子多方密码-数学公式
51 0
|
8月前
|
安全 网络安全 数据安全/隐私保护
SSL证书重要性有多大?
做好了个人数据的防护,不仅能够有效避免数据泄露的危害,还能够大幅消除用户对于个人隐私泄露的疑虑。建议企业应注重提升网络安全保护,避免出现数据泄露事件。这从长远来看是企业必不可少的重要一环,对企业的发展将起到不可估量的重要作用,符合网络安全发展的形势,有利于促进企业走上良性发展的道路。
|
JavaScript 前端开发 API
IntersectionObserver交叉观察器
IntersectionObserver交叉观察器
118 0
IntersectionObserver交叉观察器
推荐文章
更多