数字证书是用来认证公钥持有者身份合法性的电子文档,以防止第三方冒充行为。数字证书由 CA(Certifacate Authority) 负责签发,关键内容包括 颁发s者、证书有效期、使用者组织、使用者公钥 等信息。数字证书涉及到一个名为 PKI(Public Key Infrastructure) 的规范体系,包含了数字证书格式定义、密钥生命周期管理、数字签名及验证等多项技术说明,不在这篇笔记中详细展开。
我们借助下面的流程,看看 CA 是如何签发一张证书,使用者又是如何验证这样证书的。这又涉及到了数字签名技术,数字签名技术又是基于公钥密码技术。
现实世界中,签名是针对承诺的一种表现形式,手手段可以通过手写签字或盖扣印章;而在数字世界中,签名仍然是为了表示承诺,只是手段变成了二进制。
好,我们来看看 CA 数字签名包括两个过程:签发证书(Signing) 和 验证证书(Verification)
上述是对数字证书的签名和验证过程,对普通数据的数字签名和验证也是利用了同样的方法。
我们再来总结一下“签发证书”与“验证证书”两个过程,Issuer(CA)使用 Issuer 的私钥 对签发的证书进行数字签名,证书使用者使用 Issuser 的公钥 对证书进行校验,如果校验通过,说明该证书可信。
由此看出,校验的关键是 Issuer 的公钥,使用者获取不到 Issuer 的私钥,只能获取到 Issuer 的公钥,如果 Issuer 是一个坏家伙,谁来证明 Issuer 的身份 是可信的?
这就涉及到一个信任链条了,也是这篇笔记本身要讲述的事情,证书链。
前面的“证书之什么是数字签名?”简单科普了一下为什么要使用证书。其实这些以及后面要科普的都是整个公钥基础设施PKI(Public key infrastructure)体系中一部分。下面介绍什么是数字证书的信任链
证书链是一个有序的证书列表,包含SSL证书和证书颁发机构(CA)证书,使接收方能够验证发送方和所有CA是否值得信任。链或路径以SSL证书开头,链中的每个证书都由链中下一个证书标识的实体签名。
链终止于根CA证书。必须验证链中所有证书的签名,直至根CA证书。根CA证书始终由CA本身签名。
上图从下往上介绍依次有
根证书:根证书(Root Certificate)的签名(Root CA’s signature)是用根私钥(Root CA‘s private key)签的。所以验证根证书签名(Root CA’s signature)要用根公钥(Root CA’s public key)才能验证通过。这种情况就叫做自签名(self-sign)。
中介证书: 中介证书(Intermediate Certificate)里面包含了根证书的名称(Issuer’s /root CA’s name)。中介证书里面的签名(Issuer’s signature)是用根私钥(Root CA‘s private key)签的,所以需要根公钥(Root CA’s public key)才能验证通过。
终端实体证书:终端实体证书(End-entity Certificate)里面包含了中介证书的名称(Issuer’s / CA’s name)。终端实体证书里面的签名(Issuer’s signature)是用中介私钥(Owner‘s private key)签的,所以需要中介公钥(Owner’s public key)才能验证通过。
还是以Google为例,在浏览器上访问 “www.google.com” 域名,地址连左侧有一个小锁的标志,点击就能查看百度的数字证书,如下图所示(使用的是Chrome浏览器)
GlobalSign Root CA -> GTS CA 101 -> *.google.com
分别对应: 根证书 -> 中介证书 -> 终端实体证书
结合实际的使用场景对证书链进行一个归纳:
常见有四种类型用于使用PKI实现信任模型。
A.分层信任模型(Hierarchical Trust Model):
分层模型或树模型是实现PKI的最常见模型。顶部的根CA提供所有信息,中间CA在层次结构中是下一个,并且它们仅信任根提供的信息。根CA还信任层次结构中其级别的中间CA.
这种安排允许在分层树的所有级别进行高级别的控制,这可能是希望扩展其证书处理能力的大型组织中最常见的实现。分层模型允许严格控制基于证书的活动。
B.桥接信任模型(Bridge Trust Model):
在桥接信任模型中,我们在Root CA之间有许多P2P关系,根CA之间可以相互通信并允许交叉证书。该实施模型允许在组织(或部门)之间建立认证过程。
在此模型中,每个中间CA仅信任其上方和下方的CA,但可以扩展CA结构,而无需创建其他CA层。组织之间的额外灵活性和互操作性是桥模型的主要优势。
C.混合信任模型(Hybrid Trust Model):
有时您需要在某个部分链接两个或更多组织或部门,并将其他部分分开。当您需要信任两个组织的某些部分,但您不希望在组织的其他部分中建立信任。在这些时候,混合信任模型可以是最适合您的模型。构建混合信任结构时,您可以非常灵活,此模型的灵活性还允许您去创建混合环境。
请注意,在此结构中,混合环境之外的中间CA只能信任混合环境中的根CA和中间CA,信任连接到混合环境中任何中间CA所有的根CA.
D.网格信任模型(Mesh Trust Model):
当您想要实现具有交叉认证检查的分层信任模型或根CA的网络时,网格信任模型是您的最佳选择。在其他景点中,网格模型使用多路径和多根CA迁移桥结构的概念。
每个根CA中的认证都在所有Root CA,中间CA和叶CA以及连接到每个CA链的所有最终用户中获得授权。