区块链架构之美:从比特币、以太坊、超级账本看区块链架构设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.12 证书链

大多数情况下,仅仅有终端实体证书是无法进行有效性验证的,在实践中,服务器需要提供证书链才能一步步地最终验证到可信自签名证书。CA自签名证书和终端实体证书中间会增加一层证书机构,即中介证书,证书的产生和验证原理不变,只是增加一层验证,只要最后能够被任何信任的CA自签名证书验证合法即可。增加中介证书以后,证书链变为了自签名证书、中介证书和终端实体证书,如图1-7所示。

图1-7 证书链

服务器证书server.pem的CA为中介证书机构inter,inter根据证书inter.pem验证server.pem确实为自己签发的有效证书。中介证书inter.pem的CA为root,root根据证书root.pem验证inter.pem为自己签发的有效证书。客户端内置可信CA的证书root.pem,因此,服务器证书server.pem被信任。

通过浏览器可以比较直观地看到申请过CA认证网站的证书链,以必应搜索为例,使用Chrome浏览器,输入网址进入网站后,单击浏览器地址栏的“小锁”图标就可以查看网站的证书链,如图1-8所示。

图1-8 通过浏览器查看网站证书链

为了保证自签名证书的安全,一般采用多级证书的结构,通常来说应该使用脱机的自签名证书来创建证书层次结构,不同用途的证书使用不同的中级自签名证书来颁发。同时,CA的层次结构提供了如下管理上的好处。

• 减少自签名证书结构的管理工作量,可以更高效地进行证书的审核与签发。

• 自签名证书一般内置在客户端中,私钥一般离线存储,一旦私钥泄露,则吊销过程非常困难,无法及时补救。

• 中介证书结构的私钥泄露,则可以快速在线吊销,并重新为用户签发新的证书。

• 证书链在四级以内一般不会对HTTPS协议的性能造成明显影响。

服务器一般提供一条证书链,但有多条路径的可能。以交叉证书为例,一条可信路径可以一直到CA的主要自签名证书上,另一条则到可选自签名证书上。

CA有时候会为同样的密钥签发多张证书,如现在常用的签名算法是SHA1,但因为安全原因正在逐步转变为SHA256。CA可以使用同样的密钥签发出不同签名的新证书,如果信赖方恰好有两张这样的证书,那么就可以构建出两条不同的可信路径。