《区块链开发实战——Hyperledger Fabric》学习笔记
一、 cryptogen
1.1 cryptogen功能
- 生成组织结构和账号相关的文件在
- 系统设计之后根据设计编写cryptogen的配置文件,然后根据配置文件生成相关证书文件
即用来生成证书文件的工具,搭建网络的第一步就是使用cryptogen模块和配置文件来生成整个fabric网络的组织架构与其对应的身份证书
1.2 cryptogen命令
运行 cryptogen --help得到:
usage: cryptogen [<flags>] <command> [<args> ...]
Utility for generating Hyperledger Fabric key material
Flags:
--help Show context-sensitive help (also try --help-long and
--help-man).
Commands:
help [<command>...]
Show help.
generate [<flags>]
Generate key material
showtemplate
Show the default configuration template
version
Show version information
extend [<flags>]
Extend existing network
- help:显示帮助信息
- generate:根据配置文件生成证书信息
- showtemplate:显示默认配置模板
- version:显示模块版本号
- extend:根据现有组织结构生成新的配置文件(不覆盖现有的配置文件)
1.3 cryptogen 生成秘钥证书
运行 cryptogen showtemplate来显示默认配置模板(去掉了注释):
OrdererOrgs: # 定义orderer节点
- Name: Orderer # orderer节点的名称
Domain: example.com # orderer节点的根域名
Specs:
- Hostname: orderer # orderer节点的主机名
PeerOrgs:
- Name: Org1 # 组织1的名称
Domain: org1.example.com # 组织1的根域名
EnableNodeOUs: false # 如果设置为true,在msp下生成config.yaml文件
Template:
Count: 1 # 组织1中的节点数目
Users:
Count: 1 # 组织1中的用户数目
- Name: Org2
Domain: org2.example.com
EnableNodeOUs: false
Template:
Count: 1
Users:
Count: 1
根据模板稍加修改创建一个Fabric系统,具体信息如下:
属性名称 | 属性值 |
---|---|
系统根域名 | testcryptogen.com |
系统orderer节点名称 | Orderer |
组成名称 | peer节点数 | 用户数
—|---
Org1 | 2 | 3
Org2 | 2 | 2
则crypto-config.yaml文件内容为:
OrdererOrgs:
- Name: Orderer
Domain: testcryptogen.com
Specs:
- Hostname: orderer
PeerOrgs:
- Name: Org1
Domain: org1.testcryptogen.com
EnableNodeOUs: false
Template:
Count: 2
Users:
Count: 3
- Name: Org2
Domain: org2.testcryptogen.com
EnableNodeOUs: false
Template:
Count: 2
Users:
Count: 2
使用cryptogen 生成证书文件:
root@i:/opt/hyperledger/fabricconfig# cryptogen generate --config=/opt/hyperledger/fabricconfig/crypto-config.yaml --output /opt/hyperledger/fabricconfig/crypto-config
org1.testcryptogen.com
org2.testcryptogen.com
使用tree查看生成的具体文件:
root@i:/opt/hyperledger/fabricconfig/crypto-config# tree -L 6
.
├── ordererOrganizations
│ └── testcryptogen.com #根域名为testcryptogen.com的orderer节点的相关证书文件
│ ├── ca # CA服务器签名文件
│ │ ├── 9fe7756ab2b8dd329ddc689a022f06773af70b1006e0df126f f22416671ff866_sk
│ │ └── ca.testcryptogen.com-cert.pem
│ ├── msp
│ │ ├── admincerts # orderer 管理员的证书
│ │ │ └── Admin@testcryptogen.com-cert.pem
│ │ ├── cacerts # orderer 根域名服务器的签名证书
│ │ │ └── ca.testcryptogen.com-cert.pem
│ │ └── tlscacerts # TLS 连接用的身份证书
│ │ └── tlsca.testcryptogen.com-cert.pem
│ ├── orderers # orderer 节点需要的相关证书文件
│ │ └── orderer.testcryptogen.com
│ │ ├── msp # orderer 节点相关证书
│ │ │ ├── admincerts
│ │ │ ├── cacerts
│ │ │ ├── keystore
│ │ │ ├── signcerts
│ │ │ └── tlscacerts
│ │ └── tls # orderer 节点和其他节点 TLS 连接用的身份证书
│ │ ├── ca.crt
│ │ ├── server.crt
│ │ └── server.key
│ ├── tlsca
│ │ ├── 0d5fa27337f1ebcfd424c61f791f0c76d67a3c06889a1ab97a 1d7de16d21936a_sk
│ │ └── tlsca.testcryptogen.com-cert.pem
│ └── users # orderer 节点用户相关的证书
│ └── Admin@testcryptogen.com
│ ├── msp
│ │ ├── admincerts
│ │ ├── cacerts
│ │ ├── keystore
│ │ ├── signcerts
│ │ └── tlscacerts
│ └── tls
│ ├── ca.crt
│ ├── client.crt
│ └── client.key
└── peerOrganizations
├── org1.testcryptoge