Hyperledger Fabric的cryptogen、configtxgen等配置文件详解
Hyperledger Fabric的cryptogen、configtxgen等配置文件详解
前言
fabric的启动需要用到的配置文件,是采用cryptogen、configtxgen二进制工具产生的,因此,在介绍配置信息时,优先需要了解这2个工具的来源。
- cryptogen: 用于产生orderer、peer节点所需要的证书;
- configtxgen: 用于产生交易配置文件,在Orderer创建传世块、Peer加入channel时候需要用到的配置文件;
可见,以上2个工具的重要性;为了获得者2个工具,这边提供了2种获取方式:
- 编译源码方式;
- 下载二进制文件方式;
前者可以通过下载源码,直接进行编译,适用于fabric的orderer、peer等都是通过下载源码直接编译获得,因此编译所需要的各种工具及配置也已经齐全,在这个前提下进行编译得到cryptogen、configtxgen很是方便;
若使用的orderer、peer等都是采用官方的hyperledger/orderer等镜像进行直接启动的,则建议直接下载对应平台、版本编译好的二进制文件。
本文采用方式2
下载二进制文件的方式
为了快速的下载镜像、二进制文件,同样有2种方式:
- 采用hyperledger fabricgithub 提供的个shell脚本,支持下载镜像、例子及工具包;
- 直接下载打包的工具包;
为了日后存档,及多机部署,因此我采用方式2,这里提供了2种方式的下载;
方式1支持直接在Linux下通过curl命令下载;
[code]curl -sSL https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh | bash -s 1.1.0
通过
curl命令下载,必须支持
https的访问,因此
curl版本低的话可能会报错,需要更新
curl。
方式2通过在windows下载后,上传到Linux服务器;
[code]https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/linux-amd64-1.1.0/hyperledger-fabric-linux-amd64-1.1.0.tar.gz
打开浏览器,输入上面下载链接进行下载,由于本机使用Linux-amd64,下载的是1.1.0版本的,下载的版本需根据你具体的系统配置相关,自行修改即可。下载后的文件名为
hyperledger-fabric-linux-amd64-1.1.0.tar.gz,通过以下解压命令得到bin目录及子文件:
[code]tar -xzvf hyperledger-fabric-linux-amd64-1.1.0.tar.gz
bin目录文件内容如下:
[code]tomato@ubuntu:bin$ tree . |-- configtxgen |-- configtxlator |-- cryptogen |-- get-docker-images.sh |-- orderer `-- peer 0 directories, 6 files
为了能在非bin目录正常使用上面的二进制的文件,因此需要将上面的6个文件分别创建Linux的软连接
ln -s,将目录切换到bin目录下,连接命令如下:
[code]ln -s cryptogen /usr/bin ln -s configtxlator /usr/bin ln -s configtxgen /usr/bin ln -s orderer /usr/bin ln -s peer /usr/bin
更简便者,直接把上面的可执行文件拷贝到
/usr/bin目录下。
使用cryptogen命令
cryptogen命令为是便捷产生orderer、peer的证书,为后续加入channel、交易签名等提供数字签名所需要的证书。
cryptogen为了能正常使用,需要配合
crypto-config.yaml的文件使用。该文件可以配置org、peer、orderer的节点信息进行统一管理,以下是本人的配置信息,配置了3个org机构、orderer的domain为zeuslook.com、每个机构有2个Peer节点,如果没有集合
fabric-ca,为了日后业务开展,可以生成大批量『大批机构、大批peer节点』的证书:
[code]OrdererOrgs: - Name: Orderer Domain: zeuslook.com Specs: - Hostname: orderer PeerOrgs: - Name: Org1 Domain: org1.zeuslook.com Template: Count: 2 Users: Count: 0 - Name: Org2 Domain: org2.zeuslook.com Template: Count: 2 Users: Count: 0 - Name: Org3 Domain: org3.zeuslook.com Template: Count: 2 Users: Count: 0
有了以上命令,就可以通过
cryptogen命令生成证书:
[code]cryptogen generate --config=./crypto-config.yaml
执行了以上操作后,会在当前的
crypto-config目录下生成对应的文件,为了保证每次数据的正确性,建议每次生成时都删除掉该目录下的配置信息,新生成的文件目录结构如下:
[code]tomato@ubuntu:crypto-config$ tree -L 4 . |-- ordererOrganizations | `-- zeuslook.com | |-- ca | | |-- 75f8eae45073bf9cab573f05e37a0914d6735ca2dc2bc49d498c3aa06f1721c4_sk | | `-- ca.zeuslook.com-cert.pem | |-- msp | | |-- admincerts | | |-- cacerts | | `-- tlscacerts | |-- orderers | | `-- orderer.zeuslook.com | |-- tlsca | | |-- 4f4655a1be02fe2b97670f62de8674280abd13f083df61561d020b4e555b470b_sk | | `-- tlsca.zeuslook.com-cert.pem | `-- users | `-- Admin@zeuslook.com `-- peerOrganizations |-- org1.zeuslook.com | |-- ca | | |-- 9fc5b582c08fff830c66c0b042a1c2802a36a2d1309bd4a28967e6671e6ad9d7_sk | | `-- ca.org1.zeuslook.com-cert.pem | |-- msp | | |-- admincerts | | |-- cacerts | | `-- tlscacerts | |-- peers | | |-- peer0.org1.zeuslook.com | | `-- peer1.org1.zeuslook.com | |-- tlsca | | |-- 55bc5fa06d887adfc18226682ef27cff90dfbe3a223e9dcb80132092d0a60a8d_sk | | `-- tlsca.org1.zeuslook.com-cert.pem | `-- users | `-- Admin@org1.zeuslook.com |-- org2.zeuslook.com | |-- ca | | |-- 3b3a86672487e87473f6e0c6c08de392b4605de4e27a7219864a093b73972c43_sk | | `-- ca.org2.zeuslook.com-cert.pem | |-- msp | | |-- admincerts | | |-- cacerts | | `-- tlscacerts | |-- peers | | |-- peer0.org2.zeuslook.com | | `-- peer1.org2.zeuslook.com | |-- tlsca | | |-- 29b239e903ab70e403edf9bb89f1f5408e44c7d80550b15a4284e2db3c929d62_sk | | `-- tlsca.org2.zeuslook.com-cert.pem | `-- users | `-- Admin@org2.zeuslook.com `-- org3.zeuslook.com |-- ca | |-- ca.org3.zeuslook.com-cert.pem | `-- ff27fee4850d56aae2a52f008e8bad74416612c08858d0bddd80a4dca2c3cda4_sk |-- msp | |-- admincerts | |-- cacerts | `-- tlscacerts |-- peers | |-- peer0.org3.zeuslook.com | `-- peer1.org3.zeuslook.com |-- tlsca | |-- f8c39c4f957f1830034adb5cd0b0013ac956d82c49020f6b36fcb620c9f4ccdb_sk | `-- tlsca.org3.zeuslook.com-cert.pem `-- users `-- Admin@org3.zeuslook.com 49 directories, 16 files
由上面信息可以看出,正确的生产了3个Org机构及每个机构下对应2个Peer节点、1个ca节点、1个Orderer节点。记住
_sk结尾的文件,后续会使用到!
恭喜你已经成功的生成了证书!
使用configtxgen命令
configtxgen命令是为了生成传世块及交易配置块信息,为后续Order的启动、Peer加入channel提供配置信息。
configtxgen配合其配置文件
configtx.yaml一起使用,该配置文件可以同时配置多个属性值,我的配置文件内容如下:
[code]Profiles: ComposerOrdererGenesis: Orderer: <<: *OrdererDefaults Organizations: - *OrdererOrg Consortiums: ComposerConsortium: Organizations: - *Org1 - *Org2 ComposerChannel: Consortium: ComposerConsortium Application: <<: *ApplicationDefaults Organizations: - *Org1 Organizations: - &OrdererOrg Name: OrdererOrg ID: OrdererMSP MSPDir: crypto-config/ordererOrganizations/zeuslook.com/msp AdminPrincipal: Role.MEMBER - &Org1 Name: Org1 ID: Org1MSP MSPDir: crypto-config/peerOrganizations/org1.zeuslook.com/msp AdminPrincipal: Role.MEMBER AnchorPeers: - Host: peer0.org1.zeuslook.com Port: 7051 - &Org2 Name: Org2 ID: Org2MSP MSPDir: crypto-config/peerOrganizations/org2.zeuslook.com/msp AdminPrincipal: Role.MEMBER AnchorPeers: - Host: peer0.org2.zeuslook.com Port: 7051 Orderer: &OrdererDefaults OrdererType: solo Addresses: - orderer.zeuslook.com:7050 BatchTimeout: 2s BatchSize: MaxMessageCount: 10 AbsoluteMaxBytes: 98 MB PreferredMaxBytes: 512 KB Kafka: Brokers: - 127.0.0.1:9092 Organizations: Application: &ApplicationDefaults Organizations:
其中,配置选项
ComposerOrdererGenesis是为了创建orderer的创世块;配置选项
ComposerChannel是为了生成交易的配置文件
tx。现在有了
configtx.yaml的配置文件及其二进制文件
configtxgen,可以生成具体的创世块和交易配置块了。
- 生成composer-genesis.block文件
[code]export FABRIC_CFG_PATH=$PWD configtxgen -profile ComposerOrdererGenesis -outputBlock ./composer-genesis.block
输出结果:[code]tomato@ubuntu:composer$ configtxgen -profile ComposerOrdererGenesis -outputBlock ./composer-genesis.block 2018-06-04 16:42:23.360 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration 2018-06-04 16:42:23.388 CST [common/tools/configtxgen] doOutputBlock -> INFO 002 Generating genesis block 2018-06-04 16:42:23.389 CST [common/tools/configtxgen] doOutputBlock -> INFO 003 Writing genesis block
说明:
configtxgen获取配置文件
configtx.yaml的配置选项
ComposerOrdererGenesis,生成创世块为
composer-genesis.block保存在当期的目录下,该文件在Orderer的启动时,需要使用到。
- 生成composer-channel.tx文件
[code]configtxgen -profile ComposerChannel -outputCreateChannelTx ./composer-channel.tx -channelID composerchannel
输出结果:
[code]tomato@ubuntu:composer$ configtxgen -profile ComposerChannel -outputCreateChannelTx ./composer-channel.tx -channelID composerchannel 2018-06-04 16:43:08.538 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration 2018-06-04 16:43:08.570 CST [common/tools/configtxgen] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx 2018-06-04 16:43:08.644 CST [common/tools/configtxgen] doOutputChannelCreateTx -> INFO 003 Writing new channel tx
说明:
configtxgen获取配置文件
configtx.yaml的配置选项
ComposerChannel,生成交易配置块
composer-channel.tx保存在当期的目录下,该文件在创建channel时,需要使用到,从而得到通道块配置(如
composer-channel.block),peer节点再通过此通道块配置加入到具体的通道中,曾经在这里与创世块纠结、试错了许久。
最后启动fabric
composer自带了
startFabric.sh启动脚本,该命令会读取yaml的配置文件
docker-compose-dev.yaml文件。启动脚本会启动orderer、ca、2个机构的Peer、couchdb,最后通过交易配置块,创建通道
composerchannel信息,并加入该通道,成功的启动输出结果如下:
[code]Development only script for Hyperledger Fabric control Running 'stopFabric.sh' FABRIC_VERSION is unset, assuming hlfv11 FABRIC_START_TIMEOUT is unset, assuming 15 (seconds) tomato@ubuntu:fabric-dev-servers$ ./startFabric.sh Development only script for Hyperledger Fabric control Running 'startFabric.sh' FABRIC_VERSION is unset, assuming hlfv11 FABRIC_START_TIMEOUT is unset, assuming 15 (seconds) Removing peer0.org2.zeuslook.com ... done Removing peer1.org2.zeuslook.com ... done Removing peer0.org1.zeuslook.com ... done Removing peer1.org1.zeuslook.com ... done Removing ca.org2.zeuslook.com ... done Removing ca.org1.zeuslook.com ... done Removing orderer.zeuslook.com ... done Removing couchdb ... done Removing network composer_default Creating network "composer_default" with the default driver .... 2018-06-04 09:31:45.366 UTC [msp/identity] Sign -> DEBU 005 Sign: digest: E8219E6F9ADA5651B9032E4120463B4AAC0E17205A423E0031739465CE49ABE1 2018-06-04 09:31:45.963 UTC [channelCmd] executeJoin -> INFO 006 Successfully submitted proposal to join channel 2018-06-04 09:31:45.963 UTC [main] main -> INFO 007 Exiting.....
最后的docker进程如下:
[code]CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET b476044e84dd ca.org1.zeuslook.com 0.00% 5.43MiB / 1.925GiB 0.28% 8.76kB 39546c964030 couchdb 0.28% 92.84MiB / 1.925GiB 4.71% 27.8kB d7aaf4b22228 ca.org2.zeuslook.com 0.00% 5.477MiB / 1.925GiB 0.28% 6.83kB 3132408986b0 orderer.zeuslook.com 0.01% 8.098MiB / 1.925GiB 0.41% 18.3kB a6e1fd4ce4c0 peer0.org1.zeuslook.com 1.39% 40.79MiB / 1.925GiB 2.07% 797kB 165aea4a5587 peer1.org2.zeuslook.com 1.37% 29.7MiB / 1.925GiB 1.51% 8.43kB 67b95dd93a1c peer0.org2.zeuslook.com 1.46% 29.65MiB / 1.925GiB 1.50% 8.21kB 7a53d68b2db6 peer1.org1.zeuslook.com 1.59% 28.65MiB / 1.925GiB 1.45% 8.18kB
后续
- Fedora 25-64位操作系统中安装配置Hyperledger Fabric过程
- 从零开始配置Hyperledger Fabric区块链网络所需组件及Hyperledger Composer开发工具的安装
- Hyperledger Fabric:cryptogen
- Hyperledger Fabric V1.0学习之一---在mac上配置hyperledger fabric
- Hyperledger Fabric 1.0 从零开始(四)——Fabric源码及镜像文件处理
- 区块链开源实现hyperledger fabric架构详解
- IBM HyperLedger fabric 详解
- IBM HyperLedger fabric 详解
- IBM HyperLedger fabric 详解
- Hyperledger Fabric开发(一):环境配置
- Hyperledger fabric配置node.js
- 在Ubuntu18.04中配置Hyperledger Fabric 1.0
- Hyperledger Fabric CA User’s Guide——配置设置(四)
- Hyperledger Fabric Client SDK for Go 下载与配置
- IBM HyperLedger fabric1.0 详解和解决方案
- hyperledger fabric1.0动态添加peer节点之fabric-ca环境配置
- HyperLedger Fabric的Java Chaincode配置
- Fabric 1.0 configtxgen Tool的使用
- nginx配置文件详解
- hadoop2配置文件详解