关于Hyperledger Fabric余额转账示例中CA授权异常的技术问询
嘿,这个问题我之前帮朋友排查过,其实根源不在CA配置,而是默认的访问控制策略太宽松了,我给你拆解下:
问题根源拆解
首先明确一点:这个情况和CA配置关系不大!CA只是负责签发合法的身份证书,而谁能访问哪个peer的链码,是由Fabric的访问控制策略(ACL)和通道配置决定的。
balance-transfer示例为了降低上手门槛,默认的配置是非常开放的:
- 每个peer节点的默认ACL规则,允许任何属于通道内合法Org的身份(不管是Org1还是Org2)调用链码、查询数据;
- 通道的默认配置里,
Readers和Writers角色是包含所有通道内Org的成员的,所以Org1的身份自然能访问Org2的peer节点。
验证与修复步骤
1. 先检查peer的ACL配置
打开Org2 peer节点的core.yaml(或者部分版本里的config.yaml),找到acl区块,你会看到类似这样的默认配置:
acl: peer/Propose: /Channel/Application/Writers peer/ChaincodeQuery: /Channel/Application/Readers peer/Query: /Channel/Application/Readers
这里的/Channel/Application/Readers是通道级的角色,包含了Org1和Org2的所有成员,所以Org1的身份能通过验证。
2. 修改通道的ACL策略,实现细粒度控制
你需要更新通道配置,给Org2的peer设置专属的访问权限:
- 先导出当前通道的配置块:
peer channel fetch config config_block.pb -o orderer.example.com:7050 -c mychannel - 把配置转换成JSON格式方便编辑:
configtxlator proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config > config.json - 在
config.json里找到channel_group.groups.Application.groups.Org2MSP.policies,添加一个仅允许Org2成员的策略(比如Org2Writers),然后修改acl部分,把访问Org2 peer的链码操作绑定到这个专属策略上。 - 重新编码配置并更新通道:
# 把修改后的JSON转回proto格式 configtxlator proto_encode --input config.json --type common.Config --output config.pb # 计算配置更新差异 configtxlator compute_update --channel_id mychannel --original config.pb --updated modified_config.pb --output update.pb # 转回JSON包装成信封格式 configtxlator proto_decode --input update.pb --type common.ConfigUpdate | jq . > update.json echo '{"payload":{"header":{"channel_header":{"channel_id":"mychannel", "type":2}},"data":{"config_update":'$(cat update.json)'}}}' | jq . > update_in_envelope.json configtxlator proto_encode --input update_in_envelope.json --type common.Envelope --output update_in_envelope.pb # 提交配置更新 peer channel update -f update_in_envelope.pb -o orderer.example.com:7050 -c mychannel
3. 确认peer的MSP配置正确
确保Org2的peer节点core.yaml里的localMspId是Org2MSP,mspConfigPath指向Org2的MSP目录,这样peer才能正确识别Org2的合法身份,拒绝其他Org的访问请求。
总结
这个问题的核心是默认的开放策略导致跨Org访问没有限制,和CA的证书签发功能无关。通过调整通道的ACL策略,就能实现只有Org2的身份才能访问Org2的peer节点链码。
内容的提问来源于stack exchange,提问作者NewHFUser
相关产品推荐
相关产品推荐

