《Hyperledger Fabric菜鸟进阶攻略》 —3.1.2 如何生成组织结构及身份证书

举报
华章计算机 发表于 2020/02/16 20:10:54 2020/02/16
【摘要】 本节书摘来自华章计算机《Hyperledger Fabric菜鸟进阶攻略》 一书中第3章,第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无法对已生成的组织结构进行修改,所以需要提前做好规划;在未来会支持对组织结构的节点进行动态修改。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。