狼爱上狸

我胡汉三又回来了

搭建基于hyperledger fabric的联盟社区 --生成公私钥证书及配置文件

一.生成公私钥和证书

Fabric中有两种类型的公私钥和证书,一种是给节点之前通讯安全而准备的TLS证书,另一种是用户登录和权限控制的用户证书。这些证书本来应该是由CA来颁发,但是目前只有两个社区,所以目前暂时没有启用CA节点,但是Fabric帮我们提供了一个crytogen工具来生成证书。

 

1.1编译cryptogen

编译生成 cryptogen之前我们需要安装一个软件包,否则编译时会报错

sudo apt install libltdl3-dev

Fabric提供了专门编译cryptogen的入口,我们只需要运行以下命令即可:

cd ~/go/src/github.com/hyperledger/fabric make cryptogen

运行后系统返回如下结果即代表编译成功了

build/bin/cryptogen  CGO_CFLAGS=" " GOBIN=/home/studyzy/go/src/github.com/hyperledger/fabric/build/bin go install -tags "" -ldflags "-X github.com/hyperledger/fabric/common/tools/cryptogen/metadata.Version=1.0.0" github.com/hyperledger/fabric/common/tools/cryptogen  Binary available as build/bin/cryptogen

我们在build/bin文件夹下就可以看到编译出来的cryptogen程序。

 

1.2配置crypto-config.yaml

examples/e2e_cli/crypto-config.yaml已经提供了一个Orderer Org和两个Peer Org的配置,该模板中也对字段进行了注释。我们可以把配置修改一下:

OrdererOrgs:        - Name: Orderer     Domain: example.com               Specs:       - Hostname: orderer  PeerOrgs:      - Name: Org1     Domain: org1.example.com           Template:       Count: 1            Users:       Count: 1      - Name: Org2     Domain: org2.example.com     Template:       Count: 1     Users:       Count: 1

 

Name和Domain就是关于这个组织的名字和域名,这主要是用于生成证书的时候,证书内会包含该信息。而Template Count=1是说我们要生成1套公私钥和证书,因为我们一个组织只需要一个peer节点。最后Users. Count=1是说每个Template下面会有几个普通User(注意,Admin是Admin,不包含在这个计数中),这里配置了1,也就是说我们只需要一个普通用户User1@org2.example.com 我们可以根据实际需要调整这个配置文件,增删Org Users等。

 

1.3生成公司钥和证书

我们配置好crypto-config.yaml文件后,就可以用cryptogen去读取该文件,并生成对应的公私钥和证书了:

cd examples/e2e_cli/ ../../build/bin/cryptogen generate --config=./crypto-config.yaml

生成的文件都保存到crypto-config文件夹,我们可以进入该文件夹查看生成了哪些文件:

tree crypto-config

二.生成创世区块和Channel配置区块

2.1编译生成configtxgen

与前面1.1说到的类似,我们可以通过make命令生成configtxgen程序:

cd ~/go/src/github.com/hyperledger/fabric  make configtxgen

运行后的结果为:

build/bin/configtxgen  CGO_CFLAGS=" " GOBIN=/home/studyzy/go/src/github.com/hyperledger/fabric/build/bin go install -tags "nopkcs11" -ldflags "-X github.com/hyperledger/fabric/common/configtx/tool/configtxgen/metadata.Version=1.0.0" github.com/hyperledger/fabric/common/configtx/tool/configtxgen  Binary available as build/bin/configtxgen

2.2配置configtx.yaml

官方提供的examples/e2e_cli/configtx.yaml这个文件里面配置了由2个Org参与的Orderer共识配置TwoOrgsOrdererGenesis,以及由2个Org参与的Channel配置:TwoOrgsChannel。Orderer可以设置共识的算法是Solo还是Kafka,以及共识时区块大小,超时时间等,我们使用默认值即可,不用更改。而Peer节点的配置包含了MSP的配置,锚节点的配置。如果我们有更多的Org,或者有更多的Channel,那么就可以根据模板进行对应的修改。

2.3生成创世区块

配置修改好后,我们就用configtxgen 生成创世区块。并把这个区块保存到本地channel-artifacts文件夹中:

cd examples/e2e_cli/  ../../build/bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block

2.4生成Channel配置区块

../../build/bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel

另外关于锚节点的更新,我们也需要使用这个程序来生成文件:

../../build/bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP  ../../build/bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP

最终,我们在channel-artifacts文件夹中,应该是能够看到4个文件。

channel-artifacts/ 
├── channel.tx 
├── genesis.block 
├── Org1MSPanchors.tx 
└── Org2MSPanchors.tx

posted on 2019-05-20 14:59 狼爱上狸 阅读(47) 评论(0)  编辑  收藏 所属分类: Blockchain


只有注册用户登录后才能发表评论。


网站导航: