您的位置:首页 > 其它

Hyperledger Fabric的cryptogen、configtxgen等配置文件详解

2019-01-02 15:44 731 查看

Hyperledger Fabric的cryptogen、configtxgen等配置文件详解

前言

fabric的启动需要用到的配置文件,是采用cryptogen、configtxgen二进制工具产生的,因此,在介绍配置信息时,优先需要了解这2个工具的来源。

  • cryptogen: 用于产生orderer、peer节点所需要的证书;
  • configtxgen: 用于产生交易配置文件,在Orderer创建传世块、Peer加入channel时候需要用到的配置文件;

可见,以上2个工具的重要性;为了获得者2个工具,这边提供了2种获取方式:

  1. 编译源码方式;
  2. 下载二进制文件方式;

前者可以通过下载源码,直接进行编译,适用于fabric的orderer、peer等都是通过下载源码直接编译获得,因此编译所需要的各种工具及配置也已经齐全,在这个前提下进行编译得到cryptogen、configtxgen很是方便;

若使用的orderer、peer等都是采用官方的hyperledger/orderer等镜像进行直接启动的,则建议直接下载对应平台、版本编译好的二进制文件。

本文采用方式2

下载二进制文件的方式

为了快速的下载镜像、二进制文件,同样有2种方式:

  1. 采用hyperledger fabricgithub 提供的个shell脚本,支持下载镜像、例子及工具包;
  2. 直接下载打包的工具包;

为了日后存档,及多机部署,因此我采用方式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
,可以生成具体的创世块和交易配置块了。

  1. 生成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的启动时,需要使用到。

  1. 生成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

后续

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: