登录 |  注册 |  繁體中文


证书链简介

分类: 其它 颜色:橙色 默认  字号: 阅读(798) | 评论(0)
首先,有一批证书颁发机构(Certificate Authority,简称为 CA),由他们生成秘钥对,其中私钥保存好,公钥以证书的格式安装在我们的操作系统中,这就是 根证书。
 
我们的手机、电脑、电视机的操作系统中都预装了 CA 的根证书,他们是所有信任构建的基石。当然,我们也可以自己下载任意的根证书进行安装。
 
接下来,只要设计一个体系,能够证明 A 证书签发了 B 证书即可。这样对于收到的任何一个证书,顺藤摸瓜,只要最上面的根证书在系统中存在,即可证明该证书有效。
 
比如说,我们收到了服务器发过来的 C 证书,我们验证了 C 是由 B 签发的,然后又验证了 B 是由 A 签发的,而 A 在我们的系统中存在,那也就证明了 C 这个证书的有效性。
 
这其中,A 是根证书,B 是中间证书,C 是叶证书(类似树中的叶节点)。中间证书可以有很多个,信任的链条可以任意长,只要最终能到根证书即可。
 
得益于 RSA 的非对称性质,验证 A 是否签发了 B 证书很简单:
 
计算 B 的 hash 值(算法随便,比如 SHA1)
使用 A 的 私钥 对该 hash 进行加密,加密以后的内容叫做「签名(Signature)」
将该「签名」附在 B 证书中
A 使用自己的私钥给 B 生成签名的过程也就是「签发证书」,其中 A 叫做 Issuer,B 叫做 Subject。
 
这样,当我们收到 B 证书时,首先使用 A 证书的公钥(公钥存储在证书中)解开签名获得 hash,然后计算 B 的 hash,如果两个 hash 匹配,说明 B 确实是由 A 签发的。
 
重复上面的过程,直到根证书,就可以验证某个证书的有效性。
 
接下来我们来问几个问题。
 
为什么需要中间证书?
为什么要设计中间证书这个环节?直接使用根证书进行签发不好吗?
 
这是因为根证书的私钥安全性至关重要,一旦被泄露,将引起巨大的安全问题。
 
所以,根证书的私钥都是被保存在离线的计算机中,有严格的操作规章,每次需要使用时,会有专人将数据通过 USB 拷贝过去,操作完了以后,再将数据带出来。
 
在这套流程下,直接将根证书用于签发普通证书是不现实的。想想这个世界上有多少网站,每天对证书的需求量都是巨大的,根证书的操作效率无法满足要求,因为不能批量和自动化。
 
同时,对根证书私钥的操作越多,泄露的风险也就越大,因此,人们就发明了中间证书。
 
使用根证书签发一些中间证书,这些中间证书就可以用来签发大量的叶证书,这个过程完全可以是自动化的,就像 Let’s Encrypt 那样。
 
同时,即便中间证书的私钥泄露了也不要紧,可以使用根证书把它们撤销掉,具体怎么撤销是另外一个话题了,这里不再展开。
 
通过使用中间证书,我们就可以做到既方便,又安全。
 



姓 名: *
邮 箱:
内 容: *
验证码: 点击刷新 *   

回到顶部