Fabric CA/數字證書管理


MSP(Membership Service Provider)成員管理服務提供商

 

名詞:

1。CSR(Cerificate Signing Request):證書簽署請求文件

    CSR里包含申請者的 DN(Distinguished Name,標識名)和公鑰信息(在第三方機構簽署證書時要提供)。

    證書頒發機構拿到 CSR 后使用其根證書私鑰對證書進行加密並生成 CRT 證書文件,里面包含證書加密信息、申請者的 DN 、公鑰信息。

 

一。概述

說明:

MSP是Hyperledger Fabric1.0引入的一個組件。目的:抽象化各成員之間的控制結構關系。(MSP將證書頒發/用戶認證/后台加密機制和協議都進行了抽象)

每個MSP可定義自己規則:身份認證/簽名的生成/認證。

每個Hyperledger Fabric 1.0區塊鏈網絡可引入一個/多個MSP來進行網絡管理。(即將成員本身和成員間操作、規則、流程都模塊化)

1。成員身份是基於標准的x.509證書。利用PKI體系為每個成員頒發數字證書。結合所屬MSP進行身份認證和權限控制。

2。根CA證書(Root Certificate):

【1】自簽名證書

【2】用根CA證書私鑰簽名的證書還可簽發新的證書

3。中間CA證書(Intermediate Certificate)

【1】由其他CA證書簽發

【2】用中間CA證書私鑰簽名的證書還可簽發新的證書

簽發證書是一個“信任背書”的過程。從根CA證書-》最終用戶證書(構成一個“證書信任鏈”)

4。PKI體系可利用“CRL(Certificate Revocation List)”/“OCSP(Online Certificate Status Protocal)”管理證書有效性

【1】MSP標識檢查(身份證書都是和MSP綁定的,必須有相同的MSP標識才能驗證證書的有效性)

【2】證書路徑檢查(主要證書路徑[從用戶證書-》根CA證書路徑])

【3】CRL檢查(主要檢查證書是否被吊銷,目前僅支持CRL不支持OCSP)

二。生成MSP證書

說明:

OpenSSL可生成X.509證書,但在Hyperledger Fabric1.0中不支持包含RSA密鑰的證書。

下述采用cryptogen工具來生成MSP證書:

//下載fabric源碼
cd /opt/gopath/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git

//查看當前分支release1.3,切換分支為1.0
git branch  #當前分支
git branch -r #查看所有分支
git checkout origin/release-1.0  #切換分支

//生成MSP證書工具在目錄e2e_cli目錄下
cd examples/e2e_cli

//調用e2e的工具生成證書
./generateArtifacts.sh

注:命令執行成功后,會在e2e_cli目錄下產生文件夾crypto-config。
在這個MSP中配置了兩個組織(org1/org2)
每個組織下有兩個peer節點(peer0/peer1):排序服務節點/CA節點

配置節點的MSP證書

cd base
vi docker-compose-base.yml   //基礎鏡像

三。MSP配置的最佳實踐

1。組織與MSP間建立映射關系

建議:實際組織和MSP間建立1:1對應關系

1)一個組織對應多個MSP情況

1個組織有N個部門。

1個部門 > 1 MSP

1個peer節點 > 1 MSP

同一組織內,不同MSP(部門)的peer節點間不能互相認證。這樣:同一組織的不同部門間不能同步數據。

(2)多個組織對應一個MSP

同一個聯盟的不同組織間采用相同的成員管理架構,數據會在不同組織間同步。

N個組織 > 1 MSP (跨組織同步數據)

2。一個組織內部實現不同的權限控制

1 組織 > N 部門,實現不同部門的權限控制

實現一:為該組織內的所有部門定義一個MSP

給peer節點配置MSP時,包含相同的:可信根CA證書列表、中間CA證書、管理員證書;不同的peer節點設置不同的所屬部門(節點所屬部門:利用證書和部門間映射的OrganizaionalUnitIdentifiers定義-msp/config.yaml)。

問題:數據還會在不同peer節點間同步。(因為:peer節點在識別組織身份類型OrgIdentityType時,獲取的是MSP標識,它會認為通道內相同MSP的節點都可以分發數據)

實現二:給組織內的每個部門單獨定義MSP

(1)為peer節點配置MSP時,不同部門配置的可信中間CA證書、管理員證書可以是不同的;不同部門成員的證書路徑也是不同的。

解決問題:所有部門定義在同一個MSP中的問題

產生問題:增加管理上復雜度

(3)為每個部門設置不同的MSP

利用證書和部門間映射OrganizationalUnitIdentifiers實現不同部門的權限控制,數據同步仍然會限制在不同部門內。

3。不同類型的節點分別使用不同的MSP

需求:客戶端、Peer節點、排序服務節點分別設置不同的MSP(身份信息包含MSP標識,可確定身份)

目的:驗證背書的確是由peer節點簽名而不是客戶端/Orderer服務節點簽名

問題1:

不同節點類型分別設置不同MSP,對應的可信中間CA證書也不一樣;

在通道設置時,需要包含不同的MSP及其可信中間CA證書,組織內的不同MSP成員才可訪問通道里的數據。

同時,背書策略可指定只有peer節點對應的MSP成員背書的交易才有效。(目的:實現只能是peer節點才能背書簽名)

同一個組織按不同節點類型設置MSP后,Peer節點都有相同MSP,Peer節點間數據同步不會受影響,但會影響Peer節點&客戶端交互.

在peer節點上,某些系統鏈碼調用是和本地MSP相關的。

如:只執行本地MSP配置的由管理員發起的安裝鏈碼(install)請求/加入通道(Joinchain)請求等

應用程序執行這類系統調用時還需用到peer節點相同的MSP管理員簽名密鑰和證書

若不把這類系統調用功能放在應用程序中實現,正常的背書請求響應是沒有問題的,因為peer節點接收背書請求檢查的是有沒有通道的寫權限。

Peer節點接收背書請求檢查的是有沒有通道的寫入權限。(因此可在配置通道策略時增加客戶端MSP,C端即可向peer節點提交請求了)

問題2:

注冊事件回調函數時,Peer節點只處理和本地MSP相同的C端發起的請求。若peer節點和C端屬於不同的MSP,則會拒絕C端請求。

若業務依賴事件處理,應用程序和peer節點還是需要采用相同MSP。

4。區分管理員和CA證書

注:不要把可信根CA證書/中間CA證書設置成MSP管理員證書。

目的:將成員管理、簽發證書、驗證證書等不同職責拆分開來。方便管理和定位(安全做法)

5。區分根CA證書和TLS的根CA證書

說明:MSP的根CA證書、TLS的根CA證書、相關的中間CA證書需要存放到不同文件夾中。

6。吊銷已經頒發的證書

說明:已經頒發的證書可以被吊銷,方法如下:

(1)。刪除中間CA證書

      刪除intermediatecerts目錄下的證書,這樣由中間CA證書簽發的證書都屬於無效證書

(2)。增加CRL列表

     可把中間CA證書/單個證書添加到CRL列表

重新配置本地MSP時:要刪除intermediatecerts目錄下的證書/crls目錄下增加CRL列表證書即可。

重新配置通道MSP時:需提交CONFIG_UPDATE的交易請求,生效后修改排序服務節點和peer節點的MSP配置。

頒發數字證書的Fabric CA

一。概述

說明:

Fabric CA是超級賬本的數字證書認證中心,提供如下功能:

1。用戶信息的注冊(身份認證,或者從 LDAP 中獲取注冊信息)

2。數字證書的發行

發行擔保證書 ECerts (Enrollment Certificates)

發行交易證書 TCerts (Transaction Certificates),保障 Hyperledger Fabric 區域鏈交易平台上的信息匿名性和不可追蹤性;

3。數字證書的延期和吊銷

Fabric CA由服務端  和  客戶端組成(c/s架構)。下圖描述了Fabric CA組件在整個超級賬本架構中的作用:

官方代碼庫:https://github.com/hyperledger/fabric-ca

root CA不會直接為服務器/客戶端簽證。它會先生成幾個中間CA(intermediate CAS).

中間CA作為root CA的代表為服務器和客戶端簽證

說明:

1。Fabric CA服務端:

    提供用戶登記和注冊的數字證書管理功能,數據存儲后端可以為Mysql/PostgreSQL/LDAP等。

    若配置LDAP,則用戶信息存於LDAP(輕量目錄訪問協議)中。而不是mysql/PostgreSQL(自由的對象-關系型數據庫服務器(數據庫管理系統))。

2。Fabric CA服務采用無狀態的集群部署

    數據存儲和業務邏輯分離,Fabric CA服務能夠采用無狀態集群部署。通過HAProxy等軟件實現“負載均衡”&“服務高可用”

3。Fabric CA服務端提供Restful接口,供客戶端工具和HFC SDK訪問。

   手工部署方式可采用客戶端工具實現

   若集成到應用程序中,可采用HFC SDK來實現。(通過HFC SDK注冊的證書有多種類型:user/app/peer/orderer/client/validator/auditor等)

與 Fabric CA 服務端交互的方式有如下兩種:

A.通過 Fabric CA 客戶端

B.使用某種 Fabric SDK

與 Fabric CA 服務端的所有通信,都是通過 REST API 進行的。詳情可查看 fabric-ca/swagger/swagger-fabric-ca.json 處的 swagger 文檔中的 REST API 部分。

如圖所示,Fabric CA 客戶端或 SDK 的請求首先會到達 Fabric CA 集群前端的高可用負載均衡服務端,實際的 CA 服務由后端的某台Fabric CA 服務端提供。
同一集群中的所有 Fabric CA 服務端共享相同的后端數據庫(或 LDAP)集群,以確保證書和身份的一致性。

 

二。Fabric CA服務端安裝部署

(一)准備工作

1。安裝GO語言1.9以上版本

//Step1:切換root用戶權限
sudo passwd root     #設置密碼
su root

//Step2:下載go
wget -P /opt https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz

-P指定下載到目錄/opt目錄下

也可進入opt目錄:cd /opt 直接下載

wget  https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz

//Step3:解壓縮
tar -C /opt -xzf go1.9.2.linux-amd64.tar.gz

-C指定解壓縮文件所在目錄。

也可進入/opt目錄cd /opt直接解壓縮

tar -xzf go1.9.2.linux-amd64.tar.gz

2。設置GOPATH環境變量

//編輯文件
vi /etc/profile

//加入下述配置
export GOROOT=/opt/go
export GOPATH=/opt/gopath export GOBIN
=$GOROOT/bin export PATH=$PATH:$GOBIN //退出保存 ESC->:wq //配置文件生效 source /etc/profile //查看go是否安裝和配置環境變量成功 go version 顯示:go version go1.9.2 linux/amd64 表示成功

3。確認libtool和libtdhl-dev已安裝

//安裝libtool & libtdhl-dev

apt install libtool libltdl-dev

(二)安裝Fabric CA服務端和客戶端

//安裝git
apt-get install git  

//查看版本號
git version  

//安裝Fabric CA服務端和客戶端(fabric-ca-server & fabric-ca-client安裝至$GOPATH/bin下)--需要花費一段時間
go get -u github.com/hyperledger/fabric-ca/cmd/...
注意:最新版本會有問題,可切換到1.0版本

cd /opt/gopath/src/github.com/hyperleder/fabric-ca #進入fabric-ca目錄

git branch -r #查看所有分支

git checkout origin/release-1.0

cd
/opt/gopath/src/github.com/hyperleder/fabric-ca/cmd/fabric-ca-server

go build

go install #安裝faric-ca-server

which fabric-ca-server #查看fabric-ca-server位置:/opt/go/bin/fabric-ca-server

cd ../fabric-ca-client

go build

go install #安裝fabric-ca-client

which fabric-ca-client #查看fabric-ca-client位置:/opt/go/bin/fabric-ca-client

(三)啟動Fabric CA服務

方法一:通過命令行啟動Fabric CA服務

//初始化fabric-ca-server (目錄任意位置)
fabric-ca-server init -b admin:adminpw

//啟動fabric-ca-server,使用默認設置(目錄任意位置)
fabric-ca-server start -b admin:adminpw

-b選項:提供注冊用戶的名稱和密碼 注:若未用LDAP,則-b選項必須 默認配置文件名稱:faric-ca-server-config.yaml。路徑可自定義。

openssl查看證書細節

//打印出證書的內容:
openssl x509 -in ca-cert.pem -noout -text

方法二:通過Docker Hub下載的鏡像啟動Fabric CA服務

1。訪問https://hub.docker.com/r/hyperledger/fabric-ca/tags/ 獲取fabric-ca版本

2。修改docker-compose.yaml文件

cd $GOPATH/src/github.com/hyperledger/fabric-ca/docker/server

vi docker-compose.yml

//docker-compose.yml目錄下
docker-compose up -d

若指定的鏡像不存在,則Docker會主動拉取此鏡像,然后啟動fabric-ca服務實例

//查看啟動的docker服務
docker ps

//列出fabric-ca鏡像
docker image ls hyperledger/fabric-ca

即可查看到TAG=x86_64-1.0.0的鏡像

方法三:通過源碼編譯生成Docker鏡像,以啟動Fabric CA服務

//使用docker-compose編譯和啟動服務
cd $GOPATH/src/github.com/hyperledger/fabric-ca
//編譯
make docker

cd docker/server
//啟動fabric ca服務
docker-compose-up -d

hyperledger/fabric-ca鏡像同時包含Fabric CA的服務端fabric-ca-server和客戶端fabric-ca-client

(四)fabric-ca-server 命令行選項

$ fabric-ca-server

$ fabric-ca-server --help
Hyperledger Fabric Certificate Authority Server

Usage:
  fabric-ca-server [command]

Available Commands:
  init        Initialize the Fabric CA server
  start       Start the Fabric CA server

Flags:
      --address string                         Listening address of Fabric CA server (default "0.0.0.0")
  -b, --boot string                            The user:pass for bootstrap admin which is required to build default config file
      --ca.certfile string                     PEM-encoded CA certificate file (default "ca-cert.pem")
      --ca.chainfile string                    PEM-encoded CA chain file (default "ca-chain.pem")
      --ca.keyfile string                      PEM-encoded CA key file (default "ca-key.pem")
  -n, --ca.name string                         Certificate Authority name
  -c, --config string                          Configuration file (default "fabric-ca-server-config.yaml")
      --csr.cn string                          The common name field of the certificate signing request to a parent Fabric CA server
      --csr.hosts stringSlice                  A list of space-separated host names in a certificate signing request to a parent Fabric CA server
      --csr.serialnumber string                The serial number in a certificate signing request to a parent Fabric CA server
      --db.datasource string                   Data source which is database specific (default "fabric-ca-server.db")
      --db.tls.certfiles stringSlice           PEM-encoded list of trusted certificate files
      --db.tls.client.certfile string          PEM-encoded certificate file when mutual authenticate is enabled
      --db.tls.client.keyfile string           PEM-encoded key file when mutual authentication is enabled
      --db.type string                         Type of database; one of: sqlite3, postgres, mysql (default "sqlite3")
  -d, --debug                                  Enable debug level logging
      --ldap.enabled                           Enable the LDAP client for authentication and attributes
      --ldap.groupfilter string                The LDAP group filter for a single affiliation group (default "(memberUid=%s)")
      --ldap.url string                        LDAP client URL of form ldap://adminDN:adminPassword@host[:port]/base
      --ldap.userfilter string                 The LDAP user filter to use when searching for users (default "(uid=%s)")
  -p, --port int                               Listening port of Fabric CA server (default 7054)
      --registry.maxenrollments int            Maximum number of enrollments; valid if LDAP not enabled
      --tls.certfile string                    PEM-encoded TLS certificate file for server's listening port (default "ca-cert.pem")
      --tls.clientauth.certfiles stringSlice   PEM-encoded list of trusted certificate files
      --tls.clientauth.type string             Policy the server will follow for TLS Client Authentication. (default "noclientcert")
      --tls.enabled                            Enable TLS on the listening port
      --tls.keyfile string                     PEM-encoded TLS key for server's listening port (default "ca-key.pem")
  -u, --url string                             URL of the parent Fabric CA server


Use "fabric-ca-server [command] --help" for more information about a command.

CA Server CMD
View Code

注:參數類型標記為“stringSlice”的選項,表示可以批量指定多個參數,形如—— "string0 string1 ... stringN" 的形式,此時外層必須有雙引號,且各項之間以空格分開;多次分開指定則不需要加雙引號,如 -csr.hosts "host1 host2" 與 -csr.hosts host1 -csr.hosts host2 效果相同。

(五)Fabric CA數據庫存儲

Fabric CA默認數據庫存儲【SQLite】,文件名【fabric-ca-server.db】。若要考慮集群部署,可采用

【mysql】/【PostgreSQL】數據庫

【SQLite】的數據存儲配置:

1。基於Mysql的數據存儲

相關配置參考:https://dev.mysql.com/doc/refman/5.7/en/identifiers.html

按【sqlite3】配置。type:mysql  /datasource:mysql連接信息

db:
  type:mysql
  datasource:root:rootpw@tcp(localhost:3306)/fabric-ca?parseTime=true&tls=custom

若要通過TLS連接mysql,必須設置db.tls。同時mysql也要配置允許tls訪問。

db:
   ...
   tls:
       enabled:true
       certifiles:                          #是PEM編碼的可信根證書文件列表
            - db-server-cert.pem
       client:
            certfile:db-client-cert.pem  #PEM編碼的證書文件
            keyfile:db-client-key.pem   #PEM編碼的密鑰文件

##certfile & keyfile用於fabric ca服務與mysql數據庫之間建立安全的連接

2。基於PostgreSQL(自由的對象-關系型數據庫服務器(數據庫管理系統))的數據存儲

Fabric CA服務端配置文件參考如下:

db:
  type:postgres
  datasource:host=localhost port=5432 user=username password=pwd
  dbname=fabric_ca sslmode=verify-full

PostgreSQL上配置SSL步驟:

(1)在postgresql.conf中,打開SSL,設置為on(SSL=on)

  (2) 將你信任的CA證書root.crt放在PostgreSQL的data目錄中

(3)在pg_hba.conf中hostssl位置,設置clientcert參數為1

如何生成簽名證書:https://www.postgresql.org/docs/9.5/static/ssl-tcp.html

PostgreSQL官方文檔:https://www.postgresql.org/docs/9.4/static/libpq-ssl.html

3。基於LDAP(輕量目錄訪問協議)的數據存儲

Fabric CA服務器可通過配置連接到LDAP服務器,實現如下功能:

(1)。用戶注冊時從LDAP服務器中讀取信息進行認證

(2)。用戶鑒權時從LDAP服務器中讀取屬性信息進行驗證

配置方式:修改Fabric CA服務器配置文件內的LDAP選項。參考:https://github.com/osixia/docker-openldap

配置好LDAP服務器后,用戶注冊過程如下所示:

(1)Fabric CA客戶端或客戶端SDK發送帶有基本授權頭部的用戶注冊請求

(2)Fabric CA服務器接收到用戶注冊請求后,解析出頭部的用戶名稱和注冊密碼。

       通過在配置文件中設置"userfilter"可以查找用戶對應的可識別名稱(Distinguished Name,DN)。

       嘗試執行LDAP綁定用戶的注冊密碼進行身份驗證。

       若綁定成功,則用戶注冊就被認證通過。

(六)Fabric CA服務端操作使用

訪問Fabric CA兩種方式:【1】Fabric CA客戶端工具  【2】RESTful接口

1。Fabric CA客戶端工具

(1)。Fabric CA客戶端命令行選項

fabric-ca-client
# fabric-ca-client
Hyperledger Fabric Certificate Authority Client

Usage:
  fabric-ca-client [command]

Available Commands:
  enroll      Enroll an identity
  getcacert   Get CA certificate chain
  reenroll    Reenroll an identity
  register    Register an identity
  revoke      Revoke an identity

Flags:
  -c, --config string                Configuration file (default "$HOME/.fabric-ca-client/fabric-ca-client-config.yaml")
      --csr.cn string                The common name field of the certificate signing request
      --csr.hosts stringSlice        A list of space-separated host names in a certificate signing request
      --csr.serialnumber string      The serial number in a certificate signing request
  -d, --debug                        Enable debug level logging
      --enrollment.hosts string      Comma-separated host list
      --enrollment.label string      Label to use in HSM operations
      --enrollment.profile string    Name of the signing profile to use in issuing the certificate
      --id.affiliation string        The identity's affiliation
      --id.attr string               Attributes associated with this identity (e.g. hf.Revoker=true)
      --id.maxenrollments int        The maximum number of times the secret can be reused to enroll
      --id.name string               Unique name of the identity
      --id.secret string             The enrollment secret for the identity being registered
      --id.type string               Type of identity being registered (e.g. 'peer, app, user')
  -M, --mspdir string                Membership Service Provider directory (default "msp")
  -m, --myhost string                Hostname to include in the certificate signing request during enrollment (default "$HOSTNAME")
      --tls.certfiles stringSlice    PEM-encoded list of trusted certificate files
      --tls.client.certfile string   PEM-encoded certificate file when mutual authenticate is enabled
      --tls.client.keyfile string    PEM-encoded key file when mutual authentication is enabled
  -u, --url string                   URL of the Fabric CA server (default "http://localhost:7054")

Use "fabric-ca-client [command] --help" for more information about a command.

CA Client CMD
View Code

注:參數類型標記為“stringSlice”的選項,表示可以批量指定多個參數,形如—— "string0 string1 ... stringN" 的形式,此時外層必須有雙引號,且各項之間以空格分開;多次分開指定則不需要加雙引號,如 -csr.hosts "host1 host2" 與 -csr.hosts host1 -csr.hosts host2 效果相同。

(2)。注冊初始化的管理員用戶

說明:在Fabric CA服務端啟動時有一個管理員用戶,需要先注冊初始化的管理員用戶,獲取注冊證書后,才能進行后續操作。

注冊初始化管理員用戶步驟如下:

Step1:在fabric ca服務端配置文件fabric-ca-server-config.yaml中設置客戶端CSR(證書簽名請求)。里面選項可自定義,只有"csr.cn"必須設置成初始化管理員ID。

//設置獲取注冊證書存儲目錄的環境變量
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin

//訪問運行在本地7054端口的fabric-ca服務端
fabric-ca-client enroll -u http://admin:adminpw@localhost:7054

上述命令:
1。獲取注冊證書Ecert和對應的私鑰
2。CA證書鏈和PEM文件存儲在環境變量FABRIC_CA_CLIENT_HOME目錄下的msp子目錄中。

 (3)。登記一個新用戶

注:只有已注冊的用戶才可以發起登記(Register)請求。

發起登記請求的用戶稱為登記員(Registrar).登記用戶時需要具有相應權限。

Fabric CA服務端在接收到登記請求時需要檢查:

A。登記員需要有登記用戶的權限。

     登記類型記錄在“hf.Registrar.Roles”屬性中。若內容保存“peer/user/app”,則登記員可登記peer/app/user類型用戶但不能登記orderer類型用戶。

B。登記員只能登記自己歸屬范圍內的用戶

     Eg: 登記員歸屬a.b,可登記a.b.c的用戶,不能登記a.c用戶。

           若不指定登記用戶歸屬,默認和登記員歸屬一樣。

C。登記用戶屬性需要滿足以下條件:

(a)。登記的用戶屬性需要包含在登記員的用戶屬性(hf.Registar.Attributes)。目前只支持通配符“*”。

          Eg:a.b.*代表所有以a.b開頭的屬性名稱

(b)。若登記用戶也有hf.Registar.Attritbutes屬性,則用戶屬性需要是登記員用戶屬性子集。

         Eg: 登記員hf.Registar.Attributes屬性值:a.b.*,x.y.z

              則:登記用戶hf.Registar.Attributes屬性值可以為:a.b.c,x.y.z  

//登記員是admin,登記新用戶是admin2
$export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
$fabric-ca-client register --id.type user --id.name admin2 --id.affiliation org1.department1 --id.attrs 'hf.Revoker=true,admin=true:ecert'

//:ecert指admin屬性及其值會添加到用戶注冊證書中,從而用來實現訪問控制
//命令動行后會打印注冊密碼,用戶注冊時需要該注冊密碼

修改:增加type

說明:

在登記用戶時可使用“-id.attrs”選項同時指定多個屬性。之間由“,”號分隔。

fabric-ca-client register -d --id.name admin2 --id.affiliation org1.department1 --id.attrs '"hf.Registrar.Roles=peer,user",hf.Revoker=true'

"-id.attrs"可以有多個

fabric-ca-client register -d --id.name admin2 --id.affiliation org1.department1 --id.attrs '"hf.Registrar.Roles=peer,user"' --id.attrs hf.Revoker=true

登記用戶默認值在Fabric ca客戶端配置文件:

下述命令登記用戶,會從上面配置文件中讀取默認值。包括type/affiliation/attributes

export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin

fabric-ca-client register --id.name admin3

登記Peer節點

export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin //設置顯示環境變量

fabric-ca-client register --id.name peer1 --id.type peer --id.affiliation org1.department1 --id.secret peer1pw

 

(4)。Peer節點的注冊

通過命令行在“Fabric CA服務端登記了Peer節點”后,可以通過登記的“用戶名和注冊密碼”獲取注冊證書。

//設置環境變量peer1目錄位置
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1

//根據用戶名(peer1)和密碼(peer1pw)獲取注冊證書
//-M值為peer節點的MSP目錄,它保存獲取到的注冊證書等信息
fabric-ca-client enroll -u http://peer1:peer1pw@localhost:7054 -M $FABRIC_CA_CLIENT_HOME/msp

Orderer節點注冊同上。只需要將對應的MSP目錄路徑修改為orderer對應的msp目錄即可。

 

上述目錄:

cacerts:存儲可信的CA根證書  /  signcerts為ca驗證簽名的證書  / keystore

(5)。重新獲取用戶的注冊證書

若注冊證書將要過期/私鑰泄露,則可調用reenroll命令重新申請新的注冊證書

//設置環境變量peer1目錄位置
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1

//重新獲取用戶注冊證書
fabric-ca-client reenroll

(6)。用戶注銷

一個身份/證書可以被注銷。

注銷身份:則會注銷其擁有的所有證書,並阻止其申請新證書。

注銷證書:只是對單個證書進行無效處理。

格式:fabric-ca-client revoke -e <enrollment_id> -r <reason>

export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin

//注銷peer1身份
fabric-ca-client revoke -e peer1

也可用API和序列號注銷:--未測試成功

//openssl獲取證書API和序列號
serial=$(openssl x509 -in userecert.pem -serial -noout | cut -d "=" -f 2)

aki=$(openssl x509 -in userecert.pem -text | awk '/keyid/ {gsub(/*keyid:|:/,"",$1);print tolower($0)}')

//撤銷
fabric-ca-client revoke -s $serial -a $aki -r affiliationchange

(7)。獲取CA證書鏈

msp/cacerts目錄:存儲的是可信的CA根證書

//從fabric ca服務器獲取根CA證書
fabric-ca-client getcacert

 

【1】啟動一個CA2的Fabric CA服務

//啟動一個CA2的Fabric CA服務,監聽端口為7055
export FABRIC_CA_SERVER_HOME=$HOME/ca2
fabric-ca-server start -b admin:ca2pw -p 7055 -n CA2

【2】獲取CA2的根CA證書,並保存到peer1的msp目錄下。

export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1

fabric-ca-client getcacert -u http://localhost:7055 -M $FABRIC_CA_CLIENT_HOME/msp

(8)。使用TLS

Fabric CA客戶端可通過fabric-ca-client-config.yaml配置tls

 

2。RESTful接口

Fabric CA提供了多個接口,包括:獲取CA信息/獲取注冊證書/重新獲取注冊證書/用戶登記/用戶注銷/批量獲取交易證書等。

Fabric CA提供的RESTful接口,可通過http/https訪問。

【1】獲取CA信息

請求類型:GET   /   請求URL:/api/v1/cainfo

【2】獲取注冊證書

 請求類型:POST   /   請求URL:/api/v1/enroll

【3】重新獲取注冊證書

請求類型:POST   /   請求URL:/api/v1/reenroll

【4】用戶登記

請求類型:POST   /   請求URL:/api/v1/register

【5】用戶注銷

請求類型:POST   /   請求URL:/api/v1/revoke

【6】批量獲取交易證書

請求類型:POST   /   請求URL:/api/v1/tcert

私密信息管理利器HashiCorp Vault

HashiCorp Vault簡介

HashiCorp Vault啟動和讀寫

HashiCorp Vault加密引擎

HashiCorp Vault驗證和授權

HashiCorp Vault部署

HashiCort REST API

HashiCorp Vault:私密信息管理利器  ##用於生成私鑰/導入/導出/加解密/簽名/驗簽

 

 

博客Fabric CA

Hyperledger CA

Fabric CA頒發數字證書

 


免責聲明!

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



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