超级账本(hyperledger fabric) MSP介绍
通常来说,任何Fabric系统的开发需要我们要准备好相关的MSP所需的密钥及证书文件。 MSP(Member Service Provide)
MSP所需的密钥及证书文件可以通过Hyperledger Fabric CA生成,也可以通过cryptogen来生成。
cryptogen 有两重要的参数
cryptogen showtemplate # 显示生成的组织信息,可以通过`cryptogen showtemplate > crypto-config.yaml`得到一个配置模板
cryptogen generate # 生成相关证书文件,默认以`showtemplate`中的内容为配置文件生成,可以指定--config配置文件和--output输出文件
crypto-config
的配置文件内容分两部分,分别为OrdererOrgs
与PeerOrgs
* OrdererOrgs
配置用于排序组织
* PeerOrgs
用于配置普通节点组织
具体的配置如下:
OrdererOrgs:
- Name: Orderer # 组织名称
Domain: 36sn.com # 组织域名
Specs:
- Hostname: orderer # 节点名
PeerOrgs:
- Name: OrgA # 组织名称
Domain: orga.36sn.com # 组织域名
EnableNodeOUs: true # 在msp下生成config.yaml文件
Template:
Count: 1 # 该组织下存在几个子节点
Users:
Count: 1 # 该组织下存在的用户数量
通过配置文件生成密钥及证书文件:
cryptogen generate --config=crypto-config.yaml --output ./crypto-config
在生成的文件中,每一个组织都将生成自己独有的四组文件,生成的文件目录如下:
crypto-config
├── ordererOrganizations
│ └── 36sn.com
│ ├── ca # 存放组织的根证书
│ ├── msp # 存放组织的MSP文件
│ ├── orderers # 该组织下的节点所拥有的证书及key文件
│ ├── tlsca # 组织内部的tlsca证书
│ └── users # 该组织下的用户所拥有的证书及key文件
└── peerOrganizations
└── orga.36sn.com
├── ca
├── msp
├── peers
├── tlsca
└── users
详细的目录结构,编号相同表示文件是完全一致的:
crypto-config
├── ordererOrganizations
│ └── 36sn.com
│ ├── ca
│ │ ├── ca.36sn.com-cert.pem # 编号101
│ │ └── ddfb6d3b77a2e5a7102df547d5cbf1b115d6baad439b0167aa0aad235b318389_sk
│ ├── msp
│ │ ├── admincerts
│ │ │ └── Admin@36sn.com-cert.pem # 编号103
│ │ ├── cacerts
│ │ │ └── ca.36sn.com-cert.pem # 编号101
│ │ └── tlscacerts
│ │ └── tlsca.36sn.com-cert.pem # 编号102
│ ├── orderers
│ │ └── orderer.36sn.com
│ │ ├── msp
│ │ │ ├── admincerts
│ │ │ │ └── Admin@36sn.com-cert.pem # 编号103
│ │ │ ├── cacerts
│ │ │ │ └── ca.36sn.com-cert.pem # 编号101
│ │ │ ├── keystore
│ │ │ │ └── eab6f9a7e4b064fe8cdf7259a80bd49623835315a2ea92db4b51389f2d03ba63_sk
│ │ │ ├── signcerts
│ │ │ │ └── orderer.36sn.com-cert.pem
│ │ │ └── tlscacerts
│ │ │ └── tlsca.36sn.com-cert.pem # 编号102
│ │ └── tls
│ │ ├── ca.crt
│ │ ├── server.crt
│ │ └── server.key
│ ├── tlsca
│ │ ├── a6e3a23220b54665c1391320f3d51ba88a500dcec980ed8c0008784a516e13ba_sk
│ │ └── tlsca.36sn.com-cert.pem
│ └── users
│ └── Admin@36sn.com
│ ├── msp
│ │ ├── admincerts
│ │ │ └── Admin@36sn.com-cert.pem # 编号103
│ │ ├── cacerts
│ │ │ └── ca.36sn.com-cert.pem # 编号101
│ │ ├── keystore
│ │ │ └── f3eaa4b15b817bb3f94c4b8f1b267c798a4329b09d1a51dcbc32cac87d8820ac_sk
│ │ ├── signcerts
│ │ │ └── Admin@36sn.com-cert.pem # 编号103
│ │ └── tlscacerts
│ │ └── tlsca.36sn.com-cert.pem # 编号102
│ └── tls
│ ├── ca.crt
│ ├── client.crt
│ └── client.key
└── peerOrganizations
└── orga.36sn.com
├── ca
│ ├── ca.orga.36sn.com-cert.pem # 编号202
│ └── dccafd6afb69e011d9b4fbce8e9038282571696b1ad32c08d2c9b7d5fbf45f29_sk
├── msp
│ ├── admincerts
│ ├── cacerts
│ │ └── ca.orga.36sn.com-cert.pem # 编号202
│ ├── config.yaml
│ └── tlscacerts
│ └── tlsca.orga.36sn.com-cert.pem # 编号201
├── peers
│ └── peer0.orga.36sn.com
│ ├── msp
│ │ ├── admincerts
│ │ ├── cacerts
│ │ │ └── ca.orga.36sn.com-cert.pem # 编号202
│ │ ├── config.yaml
│ │ ├── keystore
│ │ │ └── 3253585679ad518a387d308ef379e81a8b3463382758a55365a83c9afb983be5_sk
│ │ ├── signcerts
│ │ │ └── peer0.orga.36sn.com-cert.pem
│ │ └── tlscacerts
│ │ └── tlsca.orga.36sn.com-cert.pem # 编号201
│ └── tls
│ ├── ca.crt
│ ├── server.crt
│ └── server.key
├── tlsca
│ ├── 4aa8928d9b45e64cf48bbad2aa2384a5740f0af8bd740b17ea0eb3bc54938f53_sk
│ └── tlsca.orga.36sn.com-cert.pem
└── users
├── Admin@orga.36sn.com
│ ├── msp
│ │ ├── admincerts
│ │ ├── cacerts
│ │ │ └── ca.orga.36sn.com-cert.pem # 编号202
│ │ ├── config.yaml
│ │ ├── keystore
│ │ │ └── 2fcc84fe9664e15895b6552ce831654a17cdf099652533cdb4a445b646025bfd_sk
│ │ ├── signcerts
│ │ │ └── Admin@orga.36sn.com-cert.pem
│ │ └── tlscacerts
│ │ └── tlsca.orga.36sn.com-cert.pem # 编号201
│ └── tls
│ ├── ca.crt
│ ├── server.crt
│ └── server.key
└── User1@orga.36sn.com
├── msp
│ ├── admincerts
│ ├── cacerts
│ │ └── ca.orga.36sn.com-cert.pem # 编号202
│ ├── config.yaml
│ ├── keystore
│ │ └── c2ebc786a2f293ff862cc41d896c58ccc88679664b82328f5fca4bdb2aa7b7c0_sk
│ ├── signcerts
│ │ └── User1@orga.36sn.com-cert.pem
│ └── tlscacerts
│ └── tlsca.orga.36sn.com-cert.pem # 编号201
└── tls
├── ca.crt
├── client.crt
└── client.key
- 通过配置文件,首先生成节点的ca证书与tls证书,分别存放在 /ca 与 /tlsca 目录。
- 将上面的ca、tls证书分别复制到/msp下面对应的ca/与tlsca目录。
- 创建子节点,并把ca、tls证书分别复制到子节点的msp下面对应的ca/与tlsca目录。
- 创建用户,并把ca、tls证书分别复制到用户的msp下面对应的ca/与tlsca目录。