我在Hyperledger Fabric上使用Hyperledger Composer来部署.bna文件。为不同的组织创建networkAdmin卡时会出现问题,这些组织无法访问网络。
背景
项目结构如下:
- 组织:
- exporter01,具有一个对等端和一个CA
- 带有一个对等端和一个CA的MaritimeAgent01
- 具有一个对等端和一个CA的终端01
- 带有一个对等端和一个CA的terrestrialTransport01
解决问题的步骤如下:
- 使用/msp/keystore/下的管理证书和privateKey文件为每个组织创建PeerAdmin卡
- 为使用PeerAdmin卡的每个组织对等端安装使用
composer network install ...
的网络存档 - 为
composer network start ...
命令上指定的每个networkAdmin请求的标识(每个组织一个( - 使用
composer network start --card PeerAdmin@$NETWORK_NAME-exporter01 --networkName $NETWORK_NAME --networkVersion $NETWORK_VERSION -o endorsementPolicyFile=./endorsement-policy.json -A exporter01 -C $TMP_BASEDIR/exporter01/admin-pub.pem -A maritimeAgency01 -C $TMP_BASEDIR/maritimeAgency01/admin-pub.pem -A terminal01 -C $TMP_BASEDIR/terminal01/admin-pub.pem -A terrestrialTransport01 -C $TMP_BASEDIR/terrestrialTransport01/admin-pub.pem
为所有对等方启动网络
问题
将composer card create ...
与以下一起使用后
- connectionProfile.json(与创建PeerAdmin卡时使用的相同(
- user:与
composer network start ...
中的-A
标志相同 - 证书:与
composer network start ...
中的-C
标志相同 - privateKey:
composer identity request ...
生成的证书对应的
使用composer card import ...
导入后,卡成功导入但是使用composer network ping -c <created networkAdmin card>
时,命令失败,并显示以下消息
Error: Error trying to ping. Error: 2 UNKNOWN: access denied: channel [mychannel] creator org [Exporter01MSP]
你知道为什么会发生这种事吗?谢谢
两周后发现错误。在这里为社区记录
这是Hyperledger结构配置错误。
当使用多个CA(每个组织一个(时,必须将证书作为环境变量ORDERER_GENERAL_TLS_ROOTCAS
添加到orderer docker容器中,否则这些CA颁发的任何身份都将无法连接。
在以下织物样本Repo行55中找到解决方案。不要忘记链接卷(第63-64行(。