您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關超級賬本Fabric如何使用第三方CA,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
Hyperledger Fabric(HF)為終端用戶使用自有CA提供了fabric-ca工具。然而在生產環境中應當盡可能保證根CA的安全性,例如讓根CA離線,而將Hyperledger Fabric環境中的證書簽發代理給中間 CA。我們將介紹如何使用第三方CA作為根CA,使用fabric-ca作為中間CA,以及如何在CA信任鏈中整合第三方CA與fabric-ca。
為了演示外部CA和中間CA的使用,我們將部署一個根CA,它只負責簽發中間CA的證書。這個中間CA采用Fabric CA,負責簽發用戶和節點證書。出于簡化考慮,在這個教程中,我們將使OpenSSL。
在開始之前,請參考相應文檔先完成以下前置環節的部署和知識準備:
安裝docker、docker-compose、git和curl
Hyperledger Fabric和bash/sheel腳本基礎知識
PKI基礎知識
克隆本教程演示代碼倉庫,其中包含了所有用到的腳本:
git clone https://github.com/aldredb/external-ca cd external-ca
下載Hyperledger Fabric預編譯程序并刪除不需要的文件。我們只用到cryptogen, fabric-ca-client和configtx。
curl -sSL http://bit.ly/2ysbOFE | bash -s -- 1.4.1 -d -s rm -f config/configtx.yaml config/core.yaml config/orderer.yaml
使用cryptogen為排序節點機構生成證書和密鑰:
export PATH=$PWD/bin:$PATH export FABRIC_CFG_PATH=${PWD} cryptogen generate --config=./crypto-config.yaml
創建用于保存對等節點機構org1.example.com
的證書和密鑰的目錄結構。如下所示,該機構包含一個節點peer0.org1.example.com
和兩個用戶:admin
和Admin@org1.example.com
。中間CA的證書和密鑰將保存在ca文件夾里。
ORG_DIR=$PWD/crypto-config/peerOrganizations/org1.example.com PEER_DIR=$ORG_DIR/peers/peer0.org1.example.com REGISTRAR_DIR=$ORG_DIR/users/admin ADMIN_DIR=$ORG_DIR/users/Admin@org1.example.com mkdir -p $ORG_DIR/ca $ORG_DIR/msp $PEER_DIR $REGISTRAR_DIR $ADMIN_DIR
生成私鑰和證書簽名請求/CSR。注意機構的值與根CA相同。
openssl ecparam -name prime256v1 -genkey -noout -out \ $ORG_DIR/ca/ica.org1.example.com.key.pem openssl req -new -sha256 -key $ORG_DIR/ca/ica.org1.example.com.key.pem \ -out $ORG_DIR/ca/ica.org1.example.com.csr \ -subj "/C=SG/ST=Singapore/L=Singapore/O=org1.example.com/OU=/CN=ica.org1.example.com"
根CA負責簽名中間CA的CSR并簽發證書,中間CA證書的有效期是根CA證書的一半。注意我們使用v3_intermediate_ca擴展。
openssl ca -batch -config openssl_root.cnf -extensions v3_intermediate_ca \ -days 1825 -notext -md sha256 -in $ORG_DIR/ca/ica.org1.example.com.csr \ -out $ORG_DIR/ca/ica.org1.example.com.crt.pem
現在讓我們看一下得到的證書:
openssl x509 -in $ORG_DIR/ca/ica.org1.example.com.crt.pem -text -noout
如下所示,可以看到證書的簽發機構是: rca.org1.example.com:
Issuer: C=SG, ST=Singapore, L=Singapore, O=org1.example.com, CN=rca.org1.example.com Validity Not Before: May 3 10:16:44 2019 GMT Not After : Apr 30 10:16:44 2029 GMT Subject: C=SG, ST=Singapore, O=org1.example.com, CN=ica.org1.example.com
一旦我們簽發了中間CA的證書,就不再需要根CA了,除非需要創建另一個中間CA或者回收中間CA的證書。
現在創建CA鏈文件,其中包含了中間CA和genCA的證書:
cat $ORG_DIR/ca/ica.org1.example.com.crt.pem \ $PWD/rca/certs/rca.org1.example.com.crt.pem > \ $ORG_DIR/ca/chain.org1.example.com.crt.pem
最后啟動中間CA,中間CA的配置文件指向我們前面創建的證書、密鑰和CA鏈。 你可以參考ca-config/fabric-ca-server-config.yaml文件:
docker-compose up -d ica.org1.example.com
中間CA就緒后,我們現在可以簽發用戶證書和peer節點證書了。
首先加入(enroll)admin用戶,該用戶有權限注冊(register)其他用戶:
export FABRIC_CA_CLIENT_HOME=$REGISTRAR_DIR fabric-ca-client enroll --csr.names C=SG,ST=Singapore,L=Singapore,O=org1.example.com \ -m admin -u http://admin:adminpw@localhost:7054
現在用admin注冊機構org1.example.com
的管理員Admin@org1.example.com
,以及peer節點peer0.org1.example.com
:
fabric-ca-client register --id.name Admin@org1.example.com \ --id.secret mysecret --id.type client --id.affiliation org1 \ -u http://localhost:7054fabric-ca-client register \ --id.name peer0.org1.example.com --id.secret mysecret \ --id.type peer --id.affiliation org1 -u http://localhost:7054
加入Admin@org1.example.com
:
export FABRIC_CA_CLIENT_HOME=$ADMIN_DIR fabric-ca-client enroll \ --csr.names C=SG,ST=Singapore,L=Singapore,O=org1.example.com \ -m Admin@org1.example.com \ -u http://Admin@org1.example.com:mysecret@localhost:7054 mkdir -p $ADMIN_DIR/msp/admincerts && \ cp $ADMIN_DIR/msp/signcerts/*.pem $ADMIN_DIR/msp/admincerts/
加入peer0.org1.example.com
:
export FABRIC_CA_CLIENT_HOME=$PEER_DIRfabric-ca-client enroll \ --csr.names C=SG,ST=Singapore,L=Singapore,O=org1.example.com \ -m peer0.org1.example.com \ -u http://peer0.org1.example.com:mysecret@localhost:7054 mkdir -p $PEER_DIR/msp/admincerts && \ cp $ADMIN_DIR/msp/signcerts/*.pem $PEER_DIR/msp/admincerts/
現在讓我們看一下其中某個證書,例如peer0.org1.example.com
的證書:
openssl x509 -in $PEER_DIR/msp/signcerts/cert.pem -text -noout
證書的簽發者應當是ica.org1.example.com
:
Issuer: C=SG, ST=Singapore, O=org1.example.com, CN=ica.org1.example.com Validity Not Before: May 3 10:27:59 2019 GMT Not After : May 2 10:28:00 2020 GMT Subject: C=SG, ST=Singapore, L=Singapore, O=org1.example.com, OU=peer, OU=org1, CN=peer0.org1.example.com
恭喜!我們已經完成了第三方CA和Fabric CA的整合!
以上就是超級賬本Fabric如何使用第三方CA,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。