fabric-ca 1.4 动态添加组织在原有的Channel中

添加组织机构

fabric-ca-client  -H `pwd`/ca_admin  affiliation add com.example.org2
fabric-ca-client enroll -M `pwd`/peerOrganizations/org2.example.com/msp  -u http://admin:pass@localhost:7054 -H `pwd`/ca_admin
fabric-ca-client register  --id.name Admin@org2.example.com --id.type client --id.affiliation "com.example.org2" --id.attrs '"hf.Registrar.Roles=client,orderer,peer,user","hf.Registrar.DelegateRoles=client,orderer,peer,user",hf.Registrar.Attributes=*,hf.GenCRL=true,hf.Revoker=true,hf.AffiliationMgr=true,hf.IntermediateCA=true,role=admin:ecert'  --id.secret=password   -H `pwd`/ca_admin

fabric-ca-client enroll -u http://Admin@org2.example.com:password@localhost:7054   -M `pwd`/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp

mkdir peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/admincerts/

cp peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/cert.pem peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/admincerts/

mkdir peerOrganizations/org2.example.com/msp/admincerts/

cp peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/cert.pem  peerOrganizations/org2.example.com/msp/admincerts

fabric-ca-client register  --id.name peer0.org2.example.com --id.type peer --id.affiliation "com.example.org2" --id.attrs '"hf.Registrar.Roles=peer","hf.Registrar.DelegateRoles=peer",hf.Registrar.Attributes=*,hf.GenCRL=true,hf.Revoker=true,hf.AffiliationMgr=true,hf.IntermediateCA=true,role=admin:ecert'  --id.secret=password   -H `pwd`/peerOrganizations/org2.example.com/users/Admin@org2.example.com

fabric-ca-client enroll -u http://peer0.org2.example.com:password@localhost:7054 -M `pwd`/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp

mkdir  `pwd`/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/admincerts

cp peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/cert.pem `pwd`/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/admincerts

获取原始配置区块

添加org
cd org3-artifacts
apt update && apt install -y jq
生成证书
../../bin/cryptogen generate --config=./org3-crypto.yaml
生成org3的json字符串
export FABRIC_CFG_PATH=$PWD && ../../bin/configtxgen -printOrg Org3MSP > ../channel-artifacts/org3.json
拷贝order证书到org3目录下
cd ../ && cp -r crypto-config/ordererOrganizations org3-artifacts/crypto-config/

../../bin/configtxgen -printOrg Org2MSP -profile configtx.yaml > ../config/Org2MSP.json

docker exec -it cli bash
export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  && export CHANNEL_NAME=mychannel

获取mychannel的配置区块
peer channel fetch config ./channel-artifacts/config_block.pb -o orderer.example.com:7050 -c $CHANNEL_NAME --tls --cafile $ORDERER_CA

转为json
configtxlator proto_decode --input ./channel-artifacts/config_block.pb --type common.Block | jq .data.data[0].payload.data.config > ./channel-artifacts/config.json

将org3加入到此json中
jq -s '.[0] * {"channel_group":{"groups":{"Application":{"groups": {"Org2MSP":.[1]}}}}}' ./channel-artifacts/config.json ./channel-artifacts/Org2MSP.json > ./channel-artifacts/modified_config.json

转为pb
configtxlator proto_encode --input ./channel-artifacts/config.json --type common.Config --output ./channel-artifacts/config.pb

转为pb
configtxlator proto_encode --input ./channel-artifacts/modified_config.json --type common.Config --output ./channel-artifacts/modified_config.pb

计算pb之间的增量
configtxlator compute_update --channel_id $CHANNEL_NAME --original ./channel-artifacts/config.pb --updated ./channel-artifacts/modified_config.pb --output ./channel-artifacts/org_update.pb

转为json
configtxlator proto_decode --input ./channel-artifacts/org_update.pb --type common.ConfigUpdate | jq . > ./channel-artifacts/org_update.json

加入header信息
echo '{"payload":{"header":{"channel_header":{"channel_id":"mychannel", "type":2}},"data":{"config_update":'$(cat ./channel-artifacts/org_update.json)'}}}' | jq . > ./channel-artifacts/org_update_in_envelope.json

转为pb
configtxlator proto_encode --input ./channel-artifacts/org_update_in_envelope.json --type common.Envelope --output ./channel-artifacts/org_update_in_envelope.pb

//如果重复签名会出现错误一定要注意,同时 如果联盟中存在多个组织,需要一半以上的组织同意 才能新加到组织上
org1签名
peer channel signconfigtx -f ./channel-artifacts/org_update_in_envelope.pb

切换到org2签名
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=peer0.org2.example.com:7051

//上传新配置 . update  表示签名后直接上传
peer channel update -f ./channel-artifacts/org_update_in_envelope.pb -c $CHANNEL_NAME -o orderer.example.com:7050 --tls --cafile $ORDERER_CA
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么样的朋友才算真正的好朋友?这个问题,差不多天天都有问? 教给你一个最简单的评判标准,那就是一如果你和她...
    探金时阅读 230评论 0 1
  • 晚上你打来电话,和我说起一位朋友的近况,我说:和你一样,我也是昨天才知道他已经辞职了,他只是说他和朋友开了家公司,...
    拾月家阅读 325评论 0 0
  • 大凡读诗,常常把易懂的诗歌轻易放过,有“采菊东篱下,悠然见南山”这样清淡自然的,有“晚来天欲雪,能饮一杯无”这样简...
    阿畔阅读 1,981评论 25 28