无法将BNA部署至现有Hyperledger Fabric环境的技术求助
看你遇到的这两个问题:连接失败和权限验证不通过,结合你给出的环境信息,咱们一步步拆解解决:
一、先搞定「Connect Failed」连接异常
从docker ps的输出能看到peer0的7051端口已经映射到本地,但Composer连不上,大概率是卡片配置或者TLS的问题:
检查PeerAdmin卡片的连接配置
先看看你用的PeerAdmin@composer-network-a卡片里的连接信息对不对:composer card list --card PeerAdmin@composer-network-a重点看输出里的
connection.json部分,确认peer的地址是grpcs://localhost:7051(因为你开了TLS),同时TLS根证书的路径要指向Fabric环境里的tlsca.a.example.com-cert.pem文件,路径错了就会连不上。测试peer端口的连通性
用curl试试能不能访问peer的TLS端口:curl -vk https://localhost:7051如果返回
HTTP/1.1 400 Bad Request,说明端口是通的;要是连不上,得检查本地有没有进程占用7051,或者docker的端口映射是不是正常。确认TLS证书配置正确
开启TLS后,PeerAdmin卡片必须携带正确的peer TLS根证书。如果原环境用了自定义证书,你得找到对应的证书文件,放到卡片的证书目录里,并且在connection.json里正确引用它。
二、解决「Authorization for INSTALL has been denied」权限问题
你自己用admin/adminpw创建的PeerAdmin卡片被拒,是因为Fabric的MSP策略要求只有环境初始化时指定的管理员身份才能安装链码,你新建的身份不在Admins组里:
找到原环境的管理员证书和密钥
原开发者搭建的环境里,合法的PeerAdmin身份证书和密钥应该在crypto-config/peerOrganizations/a.example.com/users/Admin@a.example.com/msp目录下:- 证书文件:
signcerts/Admin@a.example.com-cert.pem - 密钥文件:
keystore目录下的xxx_sk文件
找到这两个文件,用它们来创建合法的PeerAdmin卡片。
- 证书文件:
重新创建合规的PeerAdmin卡片
用正确的证书和密钥执行以下命令:# 先创建卡片文件 composer card create -p connection.json -u PeerAdmin -c Admin@a.example.com-cert.pem -k {你的密钥文件名}_sk -r PeerAdmin -r ChannelAdmin # 导入卡片到本地 composer card import --file PeerAdmin@composer-network-a.card注意这里的
connection.json要和原环境的配置一致,包含正确的peer、orderer地址和TLS证书信息。
三、额外的环境验证点
- 确认peer已加入目标通道
从channel list的输出看,peer0已经加入了mychannel,没问题。但部署BNA时要确保PeerAdmin卡片的连接配置里指定的通道名称就是mychannel。 - 版本匹配没问题
你用的Composer 0.19.5和Fabric 1.1.0是兼容的,这部分不用调整。
建议先把连接问题解决,确保PeerAdmin卡片能正常连通peer,再用合法的管理员身份去部署BNA,应该就能搞定了。
内容的提问来源于stack exchange,提问作者ulu

