搭建Fabric网络:生成组织结构与身份证书

  • A+
所属分类:技术

目标

明确生成组织结构及身份证书所需的配置文件及其内容含义

如何使用命令生成对应的组织结构信身份证书

任务实现

自动化脚本 byfn.sh 可以自动帮我们创建网络环境运行时所需的所有内容,但在一些特定情况之下,我们根据不同的需求需要自定义一些设置。

现在,我们来实现最重要的环节,哪些配置文件的相关设置会影响创建 Hyperledger Fabric 网络环境运行时所需要的相应内容。

 

3.1.1 与组织结构及身份证书关联的配置文件

如果要生成 Hyperledger Fabric 网络环境中所需的组织结构及身份证书信息,组织中的成员提供节点服务,相应的证书代表身份,可以在实体间进行通信以及交易时进行签名与验证。生成过程依赖crypto-config.yaml 配置文件,该配置文件路径 :fabric-samples/first-network/crypto-config.yaml

crypto-config.yaml 配置文件包含如下内容:

搭建Fabric网络:生成组织结构与身份证书

 

该配置文件指定了 OrdererOrgs 及 PeerOrgs 两个组织信息。在 PeerOrgs 配置信息中指定了 Org1 与 Org2 两个组织。每个组织使用 Template 属性下的 Count 指定了两个节点, Users 属性下的 Count 指定了一个用户。

组织信息中还包含组织名称、域名、节点数量、及新增的用户数量等相关信息。

Peer 节点的域名组成为 peer + 起始数字0 + Domain,如 Org1 中的两个 peer 节点的完整域名为:

peer0.org1.example.com,peer1.org1.example.com。

 

3.1.2 如何生成组织结构及身份证书

下面我们来实现组织结构及身份证书的生成。在 Hyperledger Fabric 中提供了一个工具 cryptogen ,该工具根据指定的配置文件实现标准化自动生成。执行过程如下:

 

搭建Fabric网络:生成组织结构与身份证书

证书和密钥(即MSP材料)将被输出到当前一个名为 crypto-config 的目录中,该目录下有两个子目录:

ordererOrganizations 子目录下包括构成 Orderer 组织(1个 Orderer 节点)的身份信息

peerOrganizations 子目录下为所有的 Peer 节点组织(2个组织,4个节点)的相关身份信息. 其中最关键的是 MSP 目录, 代表了实体的身份信息

Cryptogen 工具按照配置文件中指定的结构生成了对应的组织和密钥、及相关的证书文件

生成的 crypto-config 的完整结构如下:

搭建Fabric网络:生成组织结构与身份证书

 

在生成的目录结构中最关键的是各个资源下的 msp 目录内容,存储了生成的代表 MSP 实体身份的各种证书文件,一般包括:

admincerts :管理员的身份证书文件

cacerts :信任的根证书文件

keystore :节点的签名私钥文件

signcerts :节点的签名身份证书文件

tlscacerts::TLS 连接用的证书

intermediatecerts (可选):信任的中间证书

crls (可选):证书撤销列表

config.yaml (可选):记录OrganizationalUnitldentifiers 信息,包括根证书位置和ID信息

这些身份文件随后可以分发到对应的Orderer 节点和Peer 节点上,并放到对应的MSP路径下,用于签名验证使用。

FAQ

组织结构中可以添加新的组织吗?

生成组织结构前,可以通过 crypto-config.yaml 配置文件指定具体的组织信息,如果是多个组织,只需要在该配置文件中 PeerOrgs 节点最后添加新的组织信息即可。

Org 组织中可以指定多个 Peer 节点吗?

可以指定多个节点,只需要修改 Template 下的 Count 值即可(该值代表组织下有几个节点)。

组织结构生成之后可以随时添加或修改吗?

目前,Hyperledger Fabric 无法对已生成的组织结构进行修改;所以需要提前做好规划。在未来会支持对组织结构的节点进行动态修改。

未经授权禁止转载、改编,转载请注明出处!

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
漫兮

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen: