超级账本(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的配置文件内容分两部分,分别为OrdererOrgsPeerOrgs * 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
  1. 通过配置文件,首先生成节点的ca证书与tls证书,分别存放在 /ca 与 /tlsca 目录。
  2. 将上面的ca、tls证书分别复制到/msp下面对应的ca/与tlsca目录。
  3. 创建子节点,并把ca、tls证书分别复制到子节点的msp下面对应的ca/与tlsca目录。
  4. 创建用户,并把ca、tls证书分别复制到用户的msp下面对应的ca/与tlsca目录。

参考文献

1.蜗牛讲-fabric原理之证书生成