链客,专为开发者而生,有问必答!
此文章来自区块链技术社区,未经允许拒绝转载。
超级账本(Hyperledger Fabric)之权限管理浅析
超级账本是联盟链的代表,而其相对于共链(例如比特币,以太坊)一个较大的区别在于其强大的角色管理和权限把控上,本文主要介绍其角色管理和权限把控的一些核心机制。
证书生成
证书认证是超级账本中权限管理体系的最基础的机制,而所有证书的生成超级账本提供了一个工具cryptogen用于根据配置文件生成一套证书,并且将这些证书组织为peer和orderer两个核心组件可以直接使用的形式。
配置文件
Cryptogen的配置文件demo如下
#################################################################
OrdererOrgs: #用于orderer 组件使用的组织信息
- Name: Orderer #orderermsp的名称
Domain: example.com #orderer 的域名后缀
CA: #CA信息,不用关注,照着填写即可
Country: US
Province: California
Locality: San Francisco
Specs: #orderer域名前缀,和Domain一起组成了域名用于tls认证使用
- Hostname: orderer
PeerOrgs: #用于peer 组件使用的组织信息
- Name: Org1 #组织名称
Domain: org1.example.com #组织域名
CA:
Country: US
Province: California
Locality: San Francisco
Template: #组织内参与个体的个数
Count: 2
Users: #组织内除了管理员用户外的其他用户个数
Count: 1
- Name: Org2
Domain: org2.example.com
CA:
Country: US
Province: California
Locality: San Francisco
Template:
Count: 2
Users:
Count: 1
###########################################################################
上面的配置文件定义了一个orderer和两个组织(org1和org2),而每一个组织有两个参与方(template/count=2),同时每一个组织有一个普通用户(users/count=1)和一个管理员。其中域名的信息是为了生成tls证书,不用太关注。
生成工具
将上面的配置文件另存为crypto-config.yaml,然后运行
./cryptogen generate --config=./crypto-config.yaml --output ./crypto-config
其中cryptogen是超级账本源码自带的一个工具,编译方式是找到Fabric的目录,使用命令行:
Make build/bin/cryptogen
编译后,cryptogen存放在Fabric目录的build/bin目录下
参数—config代表了配置文件的路径
参数—output代表了生成的一套证书存放的位置
生成结果
命令运行后生成的目录结构如下
其中ordererOrganizations目录对应的是配置文件中的OrdererOrgs一节,而peerOrganizations目录对应的是PeerOrgs一节。ordererOrganizations/example.com、peerOrganizations/org1.example.com、peerOrganizations/org2.example.com这三个目录分别代表了三个机构,orderer机构一般是虚拟的,或者是超然的,是orderer节点的配置,而每一个机构都有两个根证书,一个用于功能性证书的签发,一个用于tls机制证书的签发,tls机制网上有比较成熟的资料,本文不过多介绍,只关注功能性证书。
每一个组织一般有这些目录
Ca