基于上篇博文中的例子《从0个组织开始搭建fabric网络》我们继续来做下面的实验,为org1添加用户 

Fabric中的用户都是基于组织进行管理的,每次的CA server 也是基于某一个组织的msp进行启动的,要对不同的组织进行用户管理我们应该首先重新根据该组织的msp信息重新实例化CA server,然后用fabric-ca-client,进行admin的登录,在接着去创建组织的用户,这么说可能不太好理解下面我们通过例子来解释上面的表述

序言:

前面的博文中我们生成的用户都是通过命令cryptogen 根据文件crypto-config.yaml生成的用户, 当然这里讲的文件可能大家在上篇文章中没能找到,因为上篇中我们用的都是自己创建的文件,没有用 fabric demo中的文件 

 

 

前面我们自动创建了一个用户

 

 

 Admin不能算作我们创建的用户,那个是系统默认都会有的一个用户组织管理用户,是用来后续进行用户管理的用户。

Users.Count=1 表示我们创建一个普通用户。

cryptogen 命令帮助我们生成了用户的msp信息

 

 

但是实际的生产中我们或许会需要再额外创建组织用户,下面我们正文开始

 

一,修改docker-fabric-dps-cacli.yaml文件,增加CA容器

有几个组织就加几个ca容器进去,这里我只有一个组织所以可以看到我只有一个ca容器名字就叫ca

version: '2'

services:

  ca:
    container_name: ca
    image: hyperledger/fabric-ca
    environment:
      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
      - FABRIC_CA_SERVER_CA_NAME=ca
      - FABRIC_CA_SERVER_TLS_ENABLED=false
      - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem
      - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/f41f47665d4885bfe91c0a040a243bd831d36b688f9bb3cd64b61e2bcab06621_sk
    ports:
      - "7054:7054"
    command: sh -c 'fabric-ca-server start --ca.certfile ./crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem --ca.keyfile ./crypto-config/peerOrganizations/org1.example.com/ca/f41f47665d4885bfe91c0a040a243bd831d36b688f9bb3cd64b61e2bcab06621_sk -b admin:adminpw -d'
    volumes:
      - ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config

 

这里我们注意到,Fabric CA Server启动的时候,带了3个重要的参数:ca.certfile 指定了CA的根证书,ca.keyfile 指定了接下来给新用户签发证书时的私钥,每个组织私钥的名字是不一样的,所以需要找准再传入。另外就是-b参数,指定了CA Client连接CA Server时使用的用户名密码。

下面我们通过命令来启动ca容器:

 

docker-compose -f docker-fabric-dps-cacli.yaml up -d

二,安装fabric-ca-client

不同版本的fabric对应不同版本的fabric-ca-client版本

下载地址:

https://github.com/hyperledger/fabric-ca/releases

我这边用的都是1.4.3版本的所以我下载的都是相应版本的fabric-ca-client

wget https://github.com/hyperledger/fabric-ca/releases/download/v1.4.3/hyperledger-fabric-ca-linux-amd64-1.4.3.tar.gz
tar -xvf hyperledger-fabric-ca-linux-amd64-1.4.3.tar.gz

 

 

 

 

三,使用CA Client生成新用户

1>我们首先需要以管理员身份使用CA Client连接到CA Server,并生成相应的文件。

export FABRIC_CA_CLIENT_HOME="/usr/local/gopath/src/github.com/hyperledger/fabric/network004/crypto-config/peerOrganizations/org1.example.com/ca/newuser"
fabric-ca-client enroll -u http://admin:adminpw@localhost:7054

执行以上命令用admin用户连接ca server

2>注册新用户

 接下来我们想新建一个叫devin的用户,那么需要先执行这个命令:

fabric-ca-client register --id.name devin --id.type user --id.affiliation org1.department1 --id.attrs 'hf.Revoker=true,foo=bar'

 

 

 我们拿到这个密码以后就可以再次使用enroll命令,给devin这个用户生成msp的私钥和证书:

1 fabric-ca-client enroll -u http://devin:wraduuiXlKnV@localhost:7054 -M $FABRIC_CA_CLIENT_HOME/devinmsp

现在新用户devin的私钥和证书就在$FABRIC_CA_CLIENT_HOME/devinmsp目录下,我们可以使用tree命令查看一下:

 

因为我们是给org1设置的CA,用户devin也是在org1下,所以需要把~/ca/devinmsp下面的文件转移到org1下面。

1 cd /usr/local/gopath/src/github.com/hyperledger/fabric/network004/crypto-config/peerOrganizations/org1.example.com/users
2 install -d devin/msp
3 cp -r /usr/local/gopath/src/github.com/hyperledger/fabric/network004/crypto-config/peerOrganizations/org1.example.com/ca/devinmsp/* ./msp/

 

不知道什么原因,Fabric在使用的时候需要用到msp文件夹下的admincerts文件夹,但是CA Client在生成的时候并没有这个文件夹,所以我们需要从signcerts这个文件夹中拷贝一个过来,运行以下命令:

 

上面是user1的目录和文件结构

下面我们把devin/msp下的signcerts目录拷贝到admincerts目录

cp -r ./signcerts ./admincerts

 

 

参考文档:

https://blog.csdn.net/hdyes/article/details/103034004

posted on 2020-12-15 15:24  EZgod  阅读(1452)  评论(0编辑  收藏  举报