1 介绍
前面的“PKI(公钥基础设施)之什么是证书的数字签名?”简单科普了一下为什么要使用证书。其实这些以及后面要科普的都是整个公钥基础设施PKI(Public key infrastructure)体系中一部分。下面介绍什么是数字证书的信任链。
证书链是一个有序的证书列表,包含SSL证书和证书颁发机构(CA)证书,使接收方能够验证发送方和所有CA是否值得信任。链或路径以SSL证书开头,链中的每个证书都由链中下一个证书标识的实体签名。
2 链的结构
链终止于根CA证书。必须验证链中所有证书的签名,直至根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)才能验证通过。
3 信任链模型
常见有四种类型用于使用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链的所有最终用户中获得授权。
更详细的模型介绍可以参考以下文档:
PKI Trust Models(https://pdfs.semanticscholar.org/6ec1/d42d93b734548555110f2e0afa321533b8ba.pdf)
Trust Models and Management in Public-Key Infrastructures(ftp://ftp.rsasecurity.com/pub/pdfs/PKIPaper.pdf)
参考资料
- 维基百科 https://en.wikipedia.org/wiki/Chain_of_trust
- How certificate chains work(https://knowledge.symantec.com/support/ssl-certificates-support/index?page=content&actp=CROSSLINK&id=SO16297)
- http://shamsaei.com/trust-model-implementation-pki/
- https://support.dnsimple.com/articles/what-is-ssl-certificate-chain/
- https://support.dnsimple.com/articles/what-is-ssl-root-certificate/