我正在尝试用生产中的Fabric-CA生成的证书替换由cryptogen生成的peerOrg证书。这变得很复杂,因为我无法创建其他渠道或拆除网络以换出证书。建议我使用crytopgen生成的根证书生成fabric-ca证书,并更新通道配置。
但是,使用fabric-ca生成的msp更新通道配置时出现错误(错误在下面说明)。我将不胜感激任何建议或建议,坚持了数周。
"Error: got unexpected status: BAD_REQUEST -- error applying config update to existing channel 'example-channel': error authorizing update: error validating DeltaSet: policy for [Value] /Channel/Application/ExampleMSP/MSP not satisfied: signature set did not satisfy policy"
以下是我采取的步骤,
1。)使用cryptogen生成的根证书生成了对等证书。
2。)将文件路径从密码生成的MSP更改为Fabric-CA生成的MSP 旧宣言: -&示例 名称:ExampleMSP ID:范例MSP MSPDir:crypto-config / peerOrganizations / stp.example.com / msp 锚点: -主持人:peer0.stp.example.com
新声明: -&示例 名称:ExampleMSP ID:范例MSP MSPDir:/hyperledger/stp.example.com/msp 锚点: -主持人:peer0.stp.example.com
3。)更新频道配置
考虑到MSP的新声明,提取了新的通道工件。
configtxgen -printOrg ExampleMSP> ./channel-artifacts/Example.json
在CLI容器旁边执行的命令:
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=example-channel
peer channel fetch config config_block.pb -o orderer.example.com:7050 -c $CHANNEL_NAME --tls --cafile $ORDERER_CA
configtxlator proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config > config.json
jq -s '.[0] * {"channel_group":{"groups":{"Application":{"groups": {"ExampleMSP":.[1]}}}}}' config.json Example.json > modified_config.json
configtxlator proto_encode --input config.json --type common.Config --output config.pb
configtxlator proto_encode --input modified_config.json --type common.Config --output modified_config.pb
configtxlator compute_update --channel_id $CHANNEL_NAME --original config.pb --updated modified_config.pb --output Example_update.pb
configtxlator proto_decode --input Example_update.pb --type common.ConfigUpdate | jq . > Example_update.json
echo '{"payload":{"header":{"channel_header":{"channel_id":"example-channel", "type":2}},"data":{"config_update":'"$(cat Example_update.json)"'}}}' | jq . > Example_update_in_envelope.json
configtxlator proto_encode --input Example_update_in_envelope.json --type common.Envelope --output Example_update_in_envelope.pb
peer channel signconfigtx -f Example_update_in_envelope.pb
peer channel update -f Example_update_in_envelope.pb -c $CHANNEL_NAME -o orderer.example.com:7050 --tls --cafile $ORDERER_CA