fabric網絡中,為組織添加用戶


基於上篇博文中的例子《從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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM