Hyperledger Fabric 2.2 docker-machine环境CLI创建通道报Admins策略不满足错误
通道创建Admins策略校验失败原因与排查方案
核心报错成因
该报错本质是通道创建交易的签名,无法满足/Channel/Application路径下Admins隐式策略的校验要求,具体触发原因可分为4类:
- 配置生成环节问题:
configtx.yaml定义的组织MSP信息不匹配,比如MSP的管理员身份字段配置错误,或是通道Profile中漏配了组织信息,导致签名时系统无法识别当前身份为合规组织管理员 - 身份使用环节问题:CLI加载的身份和通道要求的组织管理员身份不一致,比如用普通客户端用户证书代替组织Admin证书签名,或是MSPID拼写错误导致身份归属校验不通过
- 签名覆盖问题:Fabric默认的应用通道创建规则要求,通道Application组包含的组织,需要使用本组织的Admin身份对创建交易完成签名,任意组织漏签都会触发0子策略满足的校验报错
- 挂载配置问题:CLI容器内MSP目录挂载路径错配,导致系统读取不到对应组织的Admin证书列表,无法识别签名的角色权限
分步排查操作流程
1. 校验CLI端加载的管理员身份有效性
进入CLI容器内部,逐项检查身份配置:
- 检查MSP目录结构完整性
执行命令查看当前配置的MSP路径下的文件结构:
确认目录下存在ls -R $CORE_PEER_MSPCONFIGPATHadmincerts文件夹,且文件夹内存储了对应组织的管理员根证书,不要出现目录为空、证书类型不匹配的问题 - 校验当前使用的签名证书的角色属性
解码当前CLI使用的用户签名证书,确认证书的角色标识符合MSP定义的Admin权限要求:openssl x509 -in $CORE_PEER_MSPCONFIGPATH/signcerts/Admin@org1.example.com-cert.pem -text
2. 核对通道配置生成规则
定位网络目录下的configtx.yaml文件,核对两个核心配置项:
- 组织定义段:确认
Organizations下的Org1MSP配置的MSPDir路径正确,AdminPrincipal字段采用Fabric 2.2默认的Role.ADMIN值,不要自定义为错误的身份校验规则 - 通道Profile段:确认mychannel对应的Application组配置中,正确加入了Org1MSP,没有漏配组织
核对完成后重新生成通道创建交易,避免旧配置残留的问题:
configtxgen -profile <对应通道的Profile名称> -outputCreateChannelTx ./channel-artifacts/mychannel.tx -channelID mychannel
解码生成的交易文件,确认配置内容没有异常:
configtxlator proto_decode --input ./channel-artifacts/mychannel.tx --type common.Envelope > mychannel_decode.json
3. 正确完成交易签名再提交创建
生成通道交易文件后,不要直接提交创建命令,先使用当前组织的Admin身份对交易完成签名:
peer channel signconfigtx -f ./channel-artifacts/mychannel.tx
如果通道的Application组包含多个组织,需要切换到每个组织对应的CLI,分别用各自的Admin身份对同一个交易文件完成签名,所有组织的签名全部覆盖后,再提交创建命令:
peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/mychannel.tx --tls --cafile $ORDERER_CA
4. 排除常见配置误区
- 确认CLI配置的
CORE_PEER_LOCALMSPID值,和configtx.yaml中定义的组织MSPID完全一致,避免拼写错误导致身份归属识别失败 - 确认容器卷挂载路径正确,保证宿主机上的organizations目录内容能正确映射到CLI容器内部的MSP路径下
- 区分系统通道和应用通道的策略规则:应用通道创建的Admins策略是基于通道Application组内的组织范围校验,不是沿用系统通道的策略要求,不要混用规则
内容的提问来源于stack exchange,提问作者cherry
相关产品推荐
相关产品推荐

