Fabric实战(4)Fabric模块配置参数详解-cryptogen

cryptogen模块主要是用来生成组织结构和账号的文件,任何Fabric系统的开发通常都是从cryptogen模块开始的。在Fabric项目中,当系统设计完成后的第一项工作就是根据系统设计编写cryptogen的配置文件,然后通过这些配置文件生成相关的证书文件。cryptogen模块所生成的配置文件是Fabric项目的基石。

1.cryptogen模块命令说明

cryptogen模块是通过命令行的方式运行的,一个cryptogen命令由命令行参数和配置文件组成,通过执行命令cryptogen --help可以显示cryptogen模块的命令选项,下面是执行结果:

usage: cryptogen []  [ ...]

Utility for generating Hyperledger Fabric key material

Flags:
  --help  Show context-sensitive help (also try --help-long and --help-man).

Commands:
  help [...]
    Show help.

  generate []
    Generate key material

  showtemplate
    Show the default configuration template

  version
    Show version information

cryptogen模块一共由4个命令,这4个命令及其作用如下:

help 显示帮助信息
generate 根据配置文件生成证书信息
showtemplate 显示模板配置文件
version 显示当前模块的版本号

2.cryptogen模块配置文件

cryptogen模块的配置文件用来描述需要生成的证书文件的特征,例如有多少个组织,有多少个节点,需要多少个账号。下面我们通过一个简单的例子来初步了解一下配置文件的结构,这个例子是我们前面《Fabric实战(2)运行一个简单的fabric网络(容器外)》用到的例子:

OrdererOrgs:                                #定义orderer节点
  - Name: Orderer                           #orderer节点的名称
    Domain: simple-network.com              #orderer节点的根域名
    Specs:                                 
      - Hostname: orderer                   #orderer节点的主机名

PeerOrgs:
  - Name: Org1                              #组织1的名称
    Domain: org1.simple-network.com         #组织1的根域名
    Template:
      Count: 2                              #组织1中的节点数量
    Users:
      Count: 2                              #组织1中的用户数量

  - Name: Org2                              #组织2的名称
    Domain: org2.simple-network.com         #组织2的根域名
    Template:
      Count: 2                              #组织2中的节点数量
    Users:
      Count: 2                              #组织2中的用户数量

上面的配置文件定义了一个orderer节点,orderer节点的名子叫orderer,orderer节点的根域名是simple-network.com,主机名是orderer。配置文件同时还定义了2个组织,两个组织的名字分别是Org1和org2,其中Org1包含2个节点和2个用户,组织Org2包含了2个节点和2个用户。

除了Fabirc源码中提供的例子,还可以通过命令cryptogen showtemplate获取默认的模板文件,在实际的项目中稍加修改这些模板文件就可以使用。

3.cryptogen生成证书文件

我们使用上面的示例配置文件生成证书文件,命令如下:

cryptogen generate --config=crypto-config.yaml --output ./crypto-config

--output是指定证书文件生成目录

进入crypto-config文件后,我们会看到2个文件夹,通过命令tree -L 1显示如下:

.
├── ordererOrganizations     #orderer节点相关的证书文件
└── peerOrganizations        #组织节点相关的证书文件

3.1 orderer相关证书文件

进入ordererOrganizations目录,通过命令tree -L 4显示如下:

.
└── simple-network.com          #根域名为simple-network.com的orderer节点的相关证书文件
    ├── ca                      #CA服务器签名文件                                          
    │   ├── 6f9e7e7ad0fb9767e61608819083f65a20c2a16ec0a97ceeb3f5b76e213ad951_sk
    │   ├── ca.simple-network.com-cert.pem
    │   └── e3a4068e43af1ad831ba813fb430e27b7dd4796fc1bb0b25a937bdc556fb9471_sk
    ├── msp
    │   ├── admincerts          #orderer管理员的证书
    │   │   └── [email protected]
    │   ├── cacerts             #orderer根域名服务器的签名文件
    │   │   └── ca.simple-network.com-cert.pem
    │   └── tlscacerts          #TLS链接用的身份证书
    │       └── tlsca.simple-network.com-cert.pem
    ├── orderers                #orderer节点需要的相关证书文件
    │   └── orderer.simple-network.com
    │       ├── msp             #orderer节点相关证书
    │       └── tls             #orderer节点和其他节点连接用的身份证书
    ├── tlsca                   
    │   ├── 687ca4231757b074e4abb97d977fbff4b667bfbd6329bbe82eca7101760747e4_sk
    │   ├── 9015b2e134689523aa5600eb5c9690656fe1314b51143cf3cf2f5044fe195269_sk
    │   └── tlsca.simple-network.com-cert.pem
    └── users                   #orderer节点用户相关的证书              
        └── [email protected]
            ├── msp
            └── tls

3.2 组织peer相关证书文件

进入peerOrganizations目录,通过命令tree -L 1显示如下:

.
├── org1.simple-network.com 
└── org2.simple-network.com

通过上面的命令我们可以发现,在文件夹peerOrganizations中包含两个子文件夹,从这三个字文件夹的命名可以发现他们分别对应crypto-config.yaml配置文件中定义的2个组织。

这两个组织的目录结构是一样的,下面我们以组织Org1为例来说明这些文件的作用。

进入文件夹org1.simple-network.com 执行命令tree -L 4显示如下:

.
├── ca                   #根节点签名证书
│   ├── c8019061b02933441ec7fab6894a7fac60da4ea79eb6fb53df2c7e97e6da003c_sk
│   ├── ca.org1.simple-network.com-cert.pem
│   └── fe3f1287e34ab66302ce2f48280b14dccbb5bf029266e245baa334da170cbd97_sk
├── msp
│   ├── admincerts       #组织管理员证书
│   │   └── [email protected]
│   ├── cacerts          #组织根证书
│   │   └── ca.org1.simple-network.com-cert.pem
│   └── tlscacerts       #TLS链接身份证书
│       └── tlsca.org1.simple-network.com-cert.pem
├── peers
│   ├── peer0.org1.simple-network.com
│   │   ├── msp
│   │   │   ├── admincerts  #组织管理员证书,持有这些证书才能进行创建通道等操作
│   │   │   ├── cacerts     #组织根证书
│   │   │   ├── keystore    #当前节点的私钥
│   │   │   ├── signcerts   #当前节点用于签名的数字证书
│   │   │   └── tlscacerts  #TLS连接的身份证书
│   │   └── tls
│   │       ├── ca.crt      #组织的根证书
│   │       ├── server.crt  #验证本节点TLS签名的证书
│   │       └── server.key  #当前节点的私钥文件,用来进行TLS签名
│   └── peer1.org1.simple-network.com
│       ├── msp
│       │   ├── admincerts
│       │   ├── cacerts
│       │   ├── keystore
│       │   ├── signcerts
│       │   └── tlscacerts
│       └── tls
│           ├── ca.crt
│           ├── server.crt
│           └── server.key
├── tlsca
│   ├── 324c5dcee988fd9ad259e059a12dd4b53ac6aff72fdaf47d905327fb2aeba52e_sk
│   ├── f728b8e6f90603e51a35adee0a30c8c37507137b7c5d4fae442167968c4a4ded_sk
│   └── tlsca.org1.simple-network.com-cert.pem
└── users
    ├── [email protected]
    │   ├── msp
    │   │   ├── admincerts  #管理员身份证书的根证书等于组织根证书
    │   │   ├── cacerts     #管理员用户所属组织的根证书
    │   │   ├── keystore    #管理员用户的私钥
    │   │   ├── signcerts   #管理员用户的签名证书
    │   │   └── tlscacerts  #TLS链接通信证书,SDK客户端使用
    │   └── tls
    │       ├── ca.crt      #组织根证书
    │       ├── client.crt  
    │       ├── client.key  
    │       ├── server.crt  #管理员身份的证书
    │       └── server.key  #管理员私钥
    ├── [email protected]
    │   ├── msp
    │   │   ├── admincerts  #User1用户身份证书的根证书等于组织根证书
    │   │   ├── cacerts     #User1用户所属组织的根证书
    │   │   ├── keystore    #User1用户的私钥
    │   │   ├── signcerts   #User1用户的签名证书
    │   │   └── tlscacerts  #TLS链接通信证书,SDK客户端使用
    │   └── tls
    │       ├── ca.crt
    │       ├── client.crt
    │       ├── client.key
    │       ├── server.crt
    │       └── server.key
    └── [email protected]
        ├── msp
        │   ├── admincerts
        │   ├── cacerts
        │   ├── keystore
        │   ├── signcerts
        │   └── tlscacerts
        └── tls
            ├── ca.crt
            ├── client.crt
            ├── client.key
            ├── server.crt
            └── server.key


链人学院:http://www.chainhr.cn/

你可能感兴趣的:(Fabric实战(4)Fabric模块配置参数详解-cryptogen)