Hyperledger Fabric注册及CA证书颁发
加入Fabric联盟链的计算机结点和用户都必须要经过注册并获得CA颁发的证书,才能在联盟链中操作。证书颁发机构可以提供的功能如下:
身份的注册 或连接到LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)作为用户注册表;
签发登记证书(ECerts)(Enrollment Certificates)
签发交易证书(TCerts)(Transaction Certificates),在Hyperledger Fabric blockchain上交易时提供匿名性和不可链接性。
证书续期和撤销
Fabric1.1可以使用原生的也可以使用第三方证书颁发机构,以联盟链中注册用户为例,所有在联盟链中的操作,用户必须持用户注册证书生成的Token才能授权操作,无Token,在联盟链中什么也做不了,所以,用户注册到联盟链,第一步就是要生成Token,用户注册流程如下:
注册成功的最终结果是CA颁发证书,再通过证书生成Token,最终是Token发送给用户,用于用户在联盟链中增加、查询的身份凭证。
CA的架构图如下 :
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中而不是数据库中。
证书的颁发过程和验证数字签名的过程如下:
1、 证书包含了明文、密文和加密算法三要素。
2、 明文发给CA,CA用自己的私钥签发证书。具体算法是CA对证书明文做一次哈希运算(SHA256)得到h2。再用自己的私钥用RSA算法将h2加密,得到密文F'。此时有了一套完整的证书。
3、 验证数字证书时:先用CA的公钥解密密文F',得到一个哈希值h3。再用证书明文F计算一次SHA256,得到密文h2。将h2和h3的值对比。如果相等,则证书校验通过,说明该客户端持有的是CA颁发的证书。