加入Fabric联盟链的计算机结点和用户都必须要经过注册并获得CA颁发的证书,才能在联盟链中操作。证书颁发机构可以提供的功能如下:

  • 身份的注册 或连接到LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)作为用户注册表;

  • 签发登记证书(ECerts)(Enrollment Certificates)

  • 签发交易证书(TCerts)(Transaction Certificates)在Hyperledger Fabric blockchain上交易时提供匿名性和不可链接性。

  • 证书续期和撤销

Fabric1.1可以使用原生的也可以使用第三方证书颁发机构,以联盟链中注册用户为例,所有在联盟链中的操作,用户必须持用户注册证书生成的Token才能授权操作,无Token,在联盟链中什么也做不了,所以,用户注册到联盟链,第一步就是要生成Token,用户注册流程如下:

image

注册成功的最终结果是CA颁发证书,再通过证书生成Token,最终是Token发送给用户,用于用户在联盟链中增加、查询的身份凭证。

CA的架构图如下 :

clip_image002

Fabric Server端由一个服务器集群组成,以树形架构组织CA Server节点,包含一个Root 节点和多个中间节点。每个CA要么是根CA,要么是中间CA。每个中间CA都有一个父CA,它要么是根CA,要么是另一个中间CA。

可以通过Client或SDK与服务器集群中的CA服务器进行交互。客户端首先路由到HA代理,由代理进行负载均衡,将客户端连接至某一服务器的集群成员。

包括前端的一个高可用的代理服务器,连接着若干个CA Server集群,这些集群将数据共同存放在同一个数据服务器上。数据库可能是MySQL、LDAP、PostgresSQL或者SQLite(集群环境中不推荐使用SQLite)。

集群中的所有CA服务器都共享相同的数据库,以跟踪身份和证书。如果配置了LDAP,则将标识信息保存在LDAP中而不是数据库中。

Fabric Server端由一个服务器集群组成,以树形架构组织CA Server节点,包含一个Root 节点和多个中间节点。每个CA要么是根CA,要么是中间CA。每个中间CA都有一个父CA,它要么是根CA,要么是另一个中间CA。

可以通过Client或SDK与服务器集群中的CA服务器进行交互。客户端首先路由到HA代理,由代理进行负载均衡,将客户端连接至某一服务器的集群成员。

包括前端的一个高可用的代理服务器,连接着若干个CA Server集群,这些集群将数据共同存放在同一个数据服务器上。数据库可能是MySQL、LDAP、PostgresSQL。

集群中的所有CA服务器都共享相同的数据库,以跟踪身份和证书。如果配置了LDAP,则将标识信息保存在LDAP中而不是数据库中。

证书的颁发过程和验证数字签名的过程如下:

clip_image003

1、 证书包含了明文、密文和加密算法三要素。

2、 明文发给CA,CA用自己的私钥签发证书。具体算法是CA对证书明文做一次哈希运算(SHA256)得到h1。再用自己的私钥用RSA算法将h1加密,得到密文F’。此时有了一套完整的证书。

3、 验证数字证书时:先用CA的公钥解密密文F’,得到一个哈希值h2。再用证书明文F计算一次SHA256,得到密文h1。将h1和h2的值对比。如果相等,则证书校验通过,说明该客户端持有的是CA颁发的证书。