Hyperledger Fabric 1.4 产品链搭建教程 (一) —— MyFabric Demo链组织及身份生成

本文为Hyperledger Fabric 1.4 产品链搭建教程系列第一篇,介绍MyFabric Demo链的各种组织和身份如何创建。

本篇代码可以从Github上下载 - myfabric-demo-chain

代码目录结构如下

myfabric-demo-chain
├── chaincode
├── org0                  //org0组织目录
├── org0-orderer
├── org1                  //org1组织目录
├── org1-peer
├── org2                  //org2组织目录
├── org2-peer
├── peer-cli
├── scripts
├── start-ca.sh           //ca启动脚本
├── start-chain.sh
├── start.sh
├── stop-ca.sh            //ca结束脚本
├── stop-chain.sh
└── stop.sh

本节教程相关部分已用//标出。

MyFabric Demo链包含3个组织,org0,org1和org2

start-ca.sh负责调用3个组织里面的start.sh脚本

stop-ca.sh负责调用3个组织里面的stop.sh脚本

org0提供1个orderer节点,目录结构如下

org0
├── config
│   ├── ica-fabric-ca-server-config.yaml      //中间CA服务配置文件
│   └── rca-fabric-ca-server-config.yaml      //根CA服务配置文件
├── data
│   ├── admin                                                      
│   │   ├── msp                               //组织admin msp目录
│   │   └── tls                               //组织admin tls目录
│   ├── msp                                   //组织msp目录
│   │   ├── admincerts
│   │   ├── cacerts
│   │   ├── intermediatecerts
│   │   ├── keystore
│   │   ├── signcerts
│   │   ├── tlscacerts
│   │   ├── tlsintermediatecerts
│   │   └── user
│   ├── orderer                                                    
│   │   ├── msp                               //组织orderer msp目录
│   │   └── tls                               //组织orderer tls目录
│   ├── org0-ca-cert.pem                      //组织根CA证书
│   └── org0-ca-chain.pem                     //组织中间CA证书
├── docker-compose.yml
├── start.sh
└── stop.sh
  • start.sh脚本启动docker compose,生成data下的各个身份目录

  • stop.sh脚本关闭docker compose

  • docker-compose启动3个docker,根CA服务docker,中间CA服务docker,身份生成docker

Hyperledger Fabric通过MSP管理各种身份,详细概念请参阅Membership。

主要有两个用途

  1. channel msp - 保存在链上,用来定义组织管理员,CA证书等信息。此msp没有自己的身份文件。上图中org0/data/msp即为channel msp,其中keystoresigncerts目录为空。

  2. local msp - 保存在本地,提供链各种角色(client,orderer,peer)的身份信息。此msp需要身份文件用来签名。上图中org0/data/orderer/msp即为local msp表示orderer身份,org0/data/admin/msp也为local msp表示组织admin身份。它们下面的目录结构和组织msp下的目录结构类似,只是其中keystoresigncerts目录存有身份文件。

如果开启了tls安全传输则需要使用对应tls目录下的身份文件。

org1提供2个peer节点,目录结构如下

org1
├── config
│   ├── ica-fabric-ca-server-config.yaml      //中间CA服务配置文件
│   └── rca-fabric-ca-server-config.yaml      //根CA服务配置文件
├── data
│   ├── admin
│   │   ├── msp                               //组织admin msp目录
│   │   └── tls                               //组织admin tls目录
│   ├── msp                                   //组织msp目录
│   │   ├── admincerts
│   │   ├── cacerts
│   │   ├── intermediatecerts
│   │   ├── keystore 
│   │   ├── signcerts
│   │   ├── tlscacerts
│   │   ├── tlsintermediatecerts
│   │   └── user
│   ├── org1-ca-cert.pem                      //组织根CA证书
│   ├── org1-ca-chain.pem                     //组织中间CA证书
│   ├── peer
│   │   ├── peer1
│   │   │   ├── msp                           //组织peer1 msp目录
│   │   │   └── tls                           //组织peer1 tls目录
│   │   └── peer2
│   │       ├── msp                           //组织peer2 msp目录
│   │       └── tls                           //组织peer2 tls目录
│   └── user
│       ├── msp
│       └── tls
├── docker-compose.yml
├── start.sh
└── stop.sh

其目录结构和org0基本相同,唯一区别是两个peer身份目录代替了一个orderer身份目录。

根CA服务配置参数,中间CA服务配置参数以及调用它们生成相应的身份目录,请阅读源代码,这里不再叙述。

此过程的核心要点以及关键注意事项。

I. fabric ca server及fabric ca client调用流程为

  1. 指定fabric ca server 启动用户名和密码,启动fabric-ca-server

  2. 指定FABRIC_CA_CLIENT_HOME目录(此目录表明当前执行fabric-ca-client命令的身份),调用fabric-ca-client enroll方法生成身份证书。

  3. 调用fabric-ca-client register方法,生成新用户

  4. 指定FABRIC_CA_CLIENT_HOME指向新用户目录,调用fabric-ca-client enroll方法生成新用户身份证书。可以生成两种证书,标准msp身份tls连接用身份。默认为生成msp身份--enrollment.profile tls表示生成tls身份

II. 身份证书可以使用在线工具查看内容。

下面给出几种证书内容示例,注意标记部分

中间CA证书
用户证书
peer tls证书

Subject Alternative Names--csr.hosts $PEER_HOST指定。它的值,Common Name值以及证书相关命名建议采用域名命名规范。从前到后,范围越来越大,并且不要包含_这种特殊字符。

III. 修改证书中的默认names

Hyperledger Fabric证书中的默认names/C=US/ST=North Carolina/O=Hyperledger/OU=Fabric,可以自定义,Demo中改为/C=CN/ST=Si Chuan/L=Cheng Du/O=My Fabric Demo/

CA证书中的names由CA服务配置文件中csr部分指定,其它生成证书的names--csr.names指定。

本篇完,请继续阅读Hyperledger Fabric 1.4 产品链搭建教程系列第二篇 - Hyperledger Fabric 1.4 产品链搭建教程 (二) —— MyFabric Demo链节点启动及合约部署调用

你可能感兴趣的:(Hyperledger Fabric 1.4 产品链搭建教程 (一) —— MyFabric Demo链组织及身份生成)