《Hyperledger Fabric菜鸟进阶攻略》 —3.1.2 如何生成组织结构及身份证书
3.1.2 如何生成组织结构及身份证书
下面我们来实现组织结构及身份证书的具体创建过程。Hyperledger Fabric提供了一个工具cryptogen,该工具根据指定的配置文件实现标准化自动生成。
cryptogen工具的常用子命令与参数如下。
1.子命令
generate:生成的组织结构及身份证书信息。
showtemplate:显示默认配置模板。
version:显示版本信息。
2.参数
--config—指定要使用的配置模板文件。
--output—指定生成内容的输出目录。
进入fabric-samples/first-network目录:
$ cd hyfa/fabric-samples/first-network/
使用cryptogen工具为Hyperledger Fabric网络生成指定拓扑结构的组织结构和身份证书:
$ sudo ../bin/cryptogen generate --config=./crypto-config.yaml
执行成功会在终端输出如下组织信息:
org1.example.com
org2.example.com
证书和密钥(即MSP材料)将被输出到当前路径下的一个名为crypto-config的目录中,该目录下会根据crypto-config.yaml配置文件中指定的结构产生两个子目录。
ordererOrganizations子目录下包括构成Orderer组织(1个Orderer节点)的身份信息。
peerOrganizations子目录下为所有的Peer节点组织(2个Org组织,每个Org组织包含2个Peer节点)的相关身份信息。其中最关键的是MSP目录,代表了实体的身份信息。
生成的crypto-config结构类似如下:
crypto-config
├── ordererOrganizations
│ └── example.com
│ ├── ca
│ │ ├── c674f2c6028c39dd8d8fddb5e0ed4b94c0e4a620691ec70bd8e3cf3c1a3c904d_sk
│ │ └── ca.example.com-cert.pem
│ ├── msp
│ │ ├── admincerts
│ │ │ └── Admin@example.com-cert.pem
│ │ ├── cacerts
│ │ │ └── ca.example.com-cert.pem
│ │ └── tlscacerts
│ │ └── tlsca.example.com-cert.pem
│ ├── orderers
│ │ └── orderer.example.com
│ │ ├── msp
│ │ │ ├── admincerts
│ │ │ │ └── Admin@example.com-cert.pem
│ │ │ ├── cacerts
│ │ │ │ └── ca.example.com-cert.pem
│ │ │ ├── keystore
│ │ │ │ └── 4279c65c46e367e2dc0f83127a2fe5bf398ddf84010e1
8b070de3adfdc638158_sk
│ │ │ ├── signcerts
│ │ │ │ └── orderer.example.com-cert.pem
│ │ │ └── tlscacerts
│ │ │ └── tlsca.example.com-cert.pem
│ │ └── tls
│ │ ├── ca.crt
│ │ ├── server.crt
│ │ └── server.key
│ ├── tlsca
│ │ ├── ab8411233f3d73dea3f15f9618a1c5e06919135ccc78b292208434717c
13d2d0_sk
│ │ └── tlsca.example.com-cert.pem
│ └── users
│ └── Admin@example.com
│ ├── msp
│ │ ├── admincerts
│ │ │ └── Admin@example.com-cert.pem
│ │ ├── cacerts
│ │ │ └── ca.example.com-cert.pem
│ │ ├── keystore
│ │ │ └── 5de8388b453294c5fa6c55eb38f253b81d0832e196543e
41d153db0e6cd59d5d_sk
│ │ ├── signcerts
│ │ │ └── Admin@example.com-cert.pem
│ │ └── tlscacerts
│ │ └── tlsca.example.com-cert.pem
│ └── tls
│ ├── ca.crt
│ ├── client.crt
│ └── client.key
└── peerOrganizations
├── org1.example.com
│ ├── ca
│ │ ├── b8ec81e19fcd99d304e24b25981236671fe55cb230938be9a08ccc82b08eba43_sk
│ │ └── ca.org1.example.com-cert.pem
│ ├── msp
│ │ ├── admincerts
│ │ │ └── Admin@org1.example.com-cert.pem
│ │ ├── cacerts
│ │ │ └── ca.org1.example.com-cert.pem
│ │ ├── config.yaml
│ │ └── tlscacerts
│ │ └── tlsca.org1.example.com-cert.pem
│ ├── peers
│ │ ├── peer0.org1.example.com
│ │ │ ├── msp
│ │ │ │ ├── admincerts
│ │ │ │ │ └── Admin@org1.example.com-cert.pem
│ │ │ │ ├── cacerts
│ │ │ │ │ └── ca.org1.example.com-cert.pem
│ │ │ │ ├── config.yaml
│ │ │ │ ├── keystore
│ │ │ │ │ └── ba8156132aac14d0904e5d14fa5f13e1497509223d4fa1
00064f91f4f2a3d15f_sk
│ │ │ │ ├── signcerts
│ │ │ │ │ └── peer0.org1.example.com-cert.pem
│ │ │ │ └── tlscacerts
│ │ │ │ └── tlsca.org1.example.com-cert.pem
│ │ │ └── tls
│ │ │ ├── ca.crt
│ │ │ ├── server.crt
│ │ │ └── server.key
│ │ └── peer1.org1.example.com
│ │ ├── msp
│ │ │ ├── admincerts
│ │ │ │ └── Admin@org1.example.com-cert.pem
│ │ │ ├── cacerts
│ │ │ │ └── ca.org1.example.com-cert.pem
│ │ │ ├── config.yaml
│ │ │ ├── keystore
│ │ │ │ └── a37b7a22d765b2e9cc7804bc883235cc1981b24182bb4d3
403fc82698159233f_sk
│ │ │ ├── signcerts
│ │ │ │ └── peer1.org1.example.com-cert.pem
│ │ │ └── tlscacerts
│ │ │ └── tlsca.org1.example.com-cert.pem
│ │ └── tls
│ │ ├── ca.crt
│ │ ├── server.crt
│ │ └── server.key
│ ├── tlsca
│ │ ├── 9d76be67281dbe32018ee5e6c1595a4a0da1645c81f4ed7680481c521a31cdbc_sk
│ │ └── tlsca.org1.example.com-cert.pem
│ └── users
│ ├── Admin@org1.example.com
│ │ ├── msp
│ │ │ ├── admincerts
│ │ │ │ └── Admin@org1.example.com-cert.pem
│ │ │ ├── cacerts
│ │ │ │ └── ca.org1.example.com-cert.pem
│ │ │ ├── keystore
│ │ │ │ └── 493e7191fa4b9f3fce46e2fb9bbf6f0ec077ed217c7a94a
5ee72a93a22f8a2bd_sk
│ │ │ ├── signcerts
│ │ │ │ └── Admin@org1.example.com-cert.pem
│ │ │ └── tlscacerts
│ │ │ └── tlsca.org1.example.com-cert.pem
│ │ └── tls
│ │ ├── ca.crt
│ │ ├── client.crt
│ │ └── client.key
│ └── User1@org1.example.com
│ ├── msp
│ │ ├── admincerts
│ │ │ └── User1@org1.example.com-cert.pem
│ │ ├── cacerts
│ │ │ └── ca.org1.example.com-cert.pem
│ │ ├── keystore
│ │ │ └── 63d2bb7a402b6bc694ff242471d86a6512bb69726d8c3dc6
c3d91952901abe85_sk
│ │ ├── signcerts
│ │ │ └── User1@org1.example.com-cert.pem
│ │ └── tlscacerts
│ │ └── tlsca.org1.example.com-cert.pem
│ └── tls
│ ├── ca.crt
│ ├── client.crt
│ └── client.key
└── org2.example.com
……
org2.example.com组织的结构与org1.example.com组织结构相同,在此省略。
在生成的目录结构中,最关键的是各个资源下的msp目录内容,其存储了生成的代表MSP实体身份的各种证书文件,一般包括如下内容。
admincerts:管理员的身份证书文件。
cacerts:信任的根证书文件。
keystore:节点的签名私钥文件。
signcerts:节点的签名身份证书文件。
tlscacerts:TLS连接用的证书。
intermediatecerts(可选):信任的中间证书。
crls(可选):证书撤销列表。
config.yaml(可选):记录OrganizationalUnitldentifiers信息,包括根证书位置和ID信息。
这些身份文件随后可以分发到对应的Orderer节点和Peer节点上,并放到对应的MSP路径下,用于在交易时进行签名及验证。
FAQ
1.在组织结构中可以添加新的组织吗?
生成组织结构前,可以通过crypto-config.yaml配置文件指定具体的组织信息。对于多个组织,只需要在该配置文件的PeerOrgs节点最后添加新的组织信息即可。
2.Org组织可以指定多个Peer节点吗?
可以指定多个Peer节点,只需要修改Template下的Count值即可(该值代表组织下有几个节点)。
3.组织结构生成之后可以随时添加或修改吗?
目前,Hyperledger Fabric无法对已生成的组织结构进行修改,所以需要提前做好规划;在未来会支持对组织结构的节点进行动态修改。
- 点赞
- 收藏
- 关注作者
评论(0)