Hyperledger Fabric開發(fā)實(shí)戰(zhàn)-05證書服務(wù)器

本文是在閱讀《區(qū)塊鏈開發(fā)實(shí)戰(zhàn)-Hyperledger Fabric關(guān)鍵技術(shù)與案例分析》一書的同時(shí),在實(shí)踐中記錄的一些實(shí)踐步驟與經(jīng)驗(yàn)分享。

Hyperledger Fabric開發(fā)實(shí)戰(zhàn)-06 使用SDK

Hyperledger Fabric是一個(gè)聯(lián)盟鏈,其特點(diǎn)是非授權(quán)用戶不能接入,因此,F(xiàn)abric有嚴(yán)格的帳號(hào)體系,用來保證其不可篡改的特性。

在之前的例子中,我看可以看到不管是啟動(dòng)Orderer節(jié)點(diǎn)和Peer節(jié)點(diǎn),還是創(chuàng)建Channel,都需要設(shè)置msp,在規(guī)劃系統(tǒng)的時(shí)候,雖然我們配置固定數(shù)量的節(jié)點(diǎn)和用戶,但是如果系統(tǒng)發(fā)生變化,需要引入新的組織,或者組織中需要增加新的帳號(hào)和用戶,這個(gè)該如何處理呢?
cryptogen模塊對(duì)于這個(gè)問題的解決有一項(xiàng)配置,我們可以重新配置一個(gè)yaml文件,在里面指定起始位置start,例如

PeerOrgs:
  - Name: Org1
      Domain: org1.cmbc.com
      Template:
          Count: 3
          Start: 2

之前,我們?yōu)镺rg1制定了2個(gè)peer節(jié)點(diǎn),現(xiàn)在的count為3,start為3,說明從2開始,新增3個(gè)

# 原來的
peer0.org1.cmbc.com
peer1.org1.cmbc.com

# 新增的3個(gè)peer
peer2.org1.cmbc.com
peer3.org1.cmbc.com
peer4.org1.cmbc.com

Fabric-ca

Fabric-ca項(xiàng)目是為了專門解決Fabric帳號(hào)問題而開發(fā)的一個(gè)開源項(xiàng)目,由Fabric-ca-server和Fabric-ca-client兩個(gè)模塊組成。

客戶端通過sdk訪問peer節(jié)點(diǎn)之前,首先要通過CA Intermediate Server的驗(yàn)證。

編譯和安裝

準(zhǔn)備

首先需要安裝系統(tǒng)相關(guān)依賴,我們使用sqlite3作為ca-server的數(shù)據(jù)庫存儲(chǔ)

sudo apt-get install libtool libltdl-dev
sudo apt-get install sqlite3

下載并編譯

由于我們使用的是v1.1.0版本,為了保持一致性,ca上依然使用這個(gè)版本

cd $GOPATH/src/github.com/hyperledger
git clone http://gerrit.hyperledger.org//r/fabric-ca
cd $GOPATH/src/github.com/hyperledger/fabric-ca
git checkout v1.1.0

make fabric-ca-server
make fabric-ca-client



# 為了便于使用,拷貝到usr目錄下
sudo cp $GOPATH/src/github.com/hyperledger/fabric-ca/bin/* /usr/local/bin
chmod -R 775 /usr/local/bin/fabric-ca-server
chmod -R 775 /usr/local/bin/fabric-ca-client

檢查

fabric-ca-server version
fabric-ca-client version

啟動(dòng)

初始化

fabric-ca-server的init子命令用于初始化生成相關(guān)的配置文件

# 創(chuàng)建工作目錄
mkdir ~/fabricwksp/04-ca/server
cd ~/fabricwksp/04-ca/server

# 生成配置文件,-b指定了ca-server的用戶名和密碼
fabric-ca-server init -b admin:adminpw

修改配置

主要的配置文件是目錄系的fabric-ca-server-config.yaml文件,里面包含了ca-server的端口,調(diào)試模式,tls,ca,db等信息。我們所需要做的是將ca-server綁定到現(xiàn)有的組織中,在前面例子的基礎(chǔ)上,我們綁定到Org1上,需要修改ca部分,將Org1的證書設(shè)置進(jìn)去

ca:
  name: ca-org1
  keyfile: /home/ssj234/fabricwksp/02-helloworld/fabricconfig/crypto-config/peerOrganizations/org1.cmbc.com/ca/9284b1b376bd6291d1c7e9b23902d6b6f660663241e2139e7093608f04198820_sk
  certfile: /home/ssj234/fabricwksp/02-helloworld/fabricconfig/crypto-config/peerOrganizations/org1.cmbc.com/ca/ca.org1.cmbc.com-cert.pem
  chainfile: ca-chain.pem

啟動(dòng)ca-server

使用fabric-ca-server的start子命令啟動(dòng)服務(wù)器,需要制定配置文件所在的目錄

fabric-ca-server start -H /home/ssj234/fabricwksp/04-ca/server --boot admin:adminpw

client的使用

通過Client,可以生成帳號(hào),由于ca-server綁定的是Org1的證書,那么動(dòng)態(tài)生成的帳號(hào)也就是Org1下的用戶了。

設(shè)置目錄

生產(chǎn)的帳號(hào)需要保存相關(guān)證書,因此,先生成一個(gè)文件夾保存這些證書

mkdir ~/fabricwksp/04-ca/client

使用enroll登記帳號(hào)
enroll會(huì)利用管理員帳號(hào)和密碼注冊(cè),并獲得管理員的MSP證書

export FABRIC_CA_CLIENT_HOME=/home/ssj234/fabricwksp/04-ca/client
fabric-ca-client enroll -M /home/ssj234/fabricwksp/04-ca/client -u http://admin:adminpw@localhost:7054

執(zhí)行完命令后,我們會(huì)在client文件夾看到生成的相關(guān)文件

注冊(cè)帳號(hào)

注冊(cè)一個(gè)新的帳號(hào)peer4,密碼為peer4pw,部門為org1.department1

fabric-ca-client register --id.name peer4 --id.type peer --id.affiliation org1.department1 --id.secret peer4pw -u http://localhost:7054

獲取peer4的證書

首先,創(chuàng)建一個(gè)目錄,用來保存peer4的msp

mkdir -p ~/fabricwksp/04-ca/peer4/msp/admincerts

執(zhí)行enroll獲取證書

fabric-ca-client enroll -M /home/ssj234/fabricwksp/04-ca/peer4/msp -u http://peer4:peer4pw@localhost:7054

復(fù)制管理員前面到peer4目錄

cp /home/ssj234/fabricwksp/02-helloworld/fabricconfig/crypto-config/peerOrganizations/org1.cmbc.com/users/Admin@org1.cmbc.com/msp/signcerts/* ~/fabricwksp/04-ca/peer4/msp/admincerts

將共用TLS簽名證書拷貝到peer4目錄下

mkdir -p ~/fabricwksp/04-ca/peer4/tls
cp /home/ssj234/fabricwksp/02-helloworld/fabricconfig/crypto-config/peerOrganizations/org1.cmbc.com/peers/peer0.org1.cmbc.com/tls/*  ~/fabricwksp/04-ca/peer4/tls

在peer4的目錄下,可以看到如下結(jié)構(gòu),這跟我們通過cryptogen生成的賬號(hào)文件是一致的

├── msp
│   ├── admincerts
│   │   └── Admin@org1.cmbc.com-cert.pem
│   ├── cacerts
│   │   └── localhost-7054.pem
│   ├── intermediatecerts
│   │   └── localhost-7054.pem
│   ├── keystore
│   │   └── 75800c7f0f57af0eea8edfa8dc53fff45a3f98bb13281c645f18145b0c39d460_sk
│   └── signcerts
│       └── cert.pem
└── tls
    ├── ca.crt
    ├── server.crt
    └── server.key

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容