CSR裏包含申請者的 DN(Distinguished Name,標識名)和公鑰信息(在第三方機構簽署證書時要提供)。html
證書頒發機構拿到 CSR 後使用其根證書私鑰對證書進行加密並生成 CRT 證書文件,裏面包含證書加密信息、申請者的 DN 、公鑰信息。前端
說明:mysql
MSP是Hyperledger Fabric1.0引入的一個組件。目的:抽象化各成員之間的控制結構關係。(MSP將證書頒發/用戶認證/後臺加密機制和協議都進行了抽象)linux
每一個MSP可定義本身規則:身份認證/簽名的生成/認證。git
每一個Hyperledger Fabric 1.0區塊鏈網絡可引入一個/多個MSP來進行網絡管理。(即將成員自己和成員間操做、規則、流程都模塊化)github
1。成員身份是基於標準的x.509證書。利用PKI體系爲每一個成員頒發數字證書。結合所屬MSP進行身份認證和權限控制。sql
2。根CA證書(Root Certificate):docker
【1】自簽名證書數據庫
【2】用根CA證書私鑰簽名的證書還可簽發新的證書json
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)
說明:
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 //基礎鏡像
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是超級帳本的數字證書認證中心,提供以下功能:
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)集羣,以確保證書和身份的一致性。
//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
//編輯文件 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 表示成功
//安裝libtool & libtdhl-dev apt install libtool libltdl-dev
//安裝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-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 x509 -in ca-cert.pem -noout -text
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-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 --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
Fabric CA默認數據庫存儲【SQLite】,文件名【fabric-ca-server.db】。若要考慮集羣部署,可採用
【mysql】/【PostgreSQL】數據庫
【SQLite】的數據存儲配置:
相關配置參考: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數據庫之間創建安全的鏈接
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
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兩種方式:【1】Fabric CA客戶端工具 【2】RESTful接口
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
說明:在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子目錄中。
注:只有已註冊的用戶才能夠發起登記(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
經過命令行在「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
若註冊證書將要過時/私鑰泄露,則可調用reenroll命令從新申請新的註冊證書
//設置環境變量peer1目錄位置 export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1 //從新獲取用戶註冊證書 fabric-ca-client reenroll
一個身份/證書能夠被註銷。
註銷身份:則會註銷其擁有的全部證書,並阻止其申請新證書。
註銷證書:只是對單個證書進行無效處理。
格式: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
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
Fabric CA客戶端可經過fabric-ca-client-config.yaml配置tls
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