Hyperledger fabric 从对等方加入通道时出错:此标识不是管理员

Hyperledger fabric 从对等方加入通道时出错:此标识不是管理员,hyperledger-fabric,hyperledger,Hyperledger Fabric,Hyperledger,我知道“这个身份不是管理员”的问题被广泛报道,但这是一个具体的案例。我在这里和Jira都读过很多文章,我认为我的文章没有问题 我想做的是加入一个完全定制的Hyperledger 1.4网络中的对等方的通道,我没有使用cryptogen。我遇到的问题正是这个: 2019-09-25 14:02:43.340 UTC[channelCmd]InitCmdFactory->INFO 001背书人和订购人连接已初始化 错误:建议失败(错误:错误的建议响应500:拒绝对[JoinChain][global

我知道“这个身份不是管理员”的问题被广泛报道,但这是一个具体的案例。我在这里和Jira都读过很多文章,我认为我的文章没有问题

我想做的是加入一个完全定制的Hyperledger 1.4网络中的对等方的通道,我没有使用cryptogen。我遇到的问题正是这个:

2019-09-25 14:02:43.340 UTC[channelCmd]InitCmdFactory->INFO 001背书人和订购人连接已初始化
错误:建议失败(错误:错误的建议响应500:拒绝对[JoinChain][global]的访问:[在使用策略[Admins]的无通道检查策略期间验证建议的创建者满足本地MSP主体失败:[此标识不是管理员])
我知道我必须使用管理员身份来提出渠道连接建议,我正在注册为组织管理员。一旦完成了,我就加入了同行(代码如下)。当然,
CORE\u PEER\u
变量设置正确,
ADMIN\u NAME
ADMIN\u PASSWORD
存在

#获取管理员身份
ORG_ADMIN_HOME=/data/orgs/${ORG}/ADMIN
ORG_ADMIN_CERT=/data/orgs/${ORG}/msp/admincerts/CERT.pem
如果[!-d${ORG\u ADMIN\u HOME}]];然后
echo“[INFO]正在使用${CA\u NAME}注册管理员${admin\u NAME}…”
导出结构\u CA\u客户端\u主页=${ORG\u ADMIN\u HOME}
fabric ca客户端注册-d-u https://${ADMIN_NAME}:${ADMIN_PASSWORD}@${ca_URL}
mkdir-p$(dirname“${ORG\u ADMIN\u CERT}”)
cp${ORG\u ADMIN\u HOME}/msp/signcerts/*${ORG\u ADMIN\u CERT}
mkdir${ORG\u ADMIN\u HOME}/msp/admincerts
cp${ORG\u ADMIN\u HOME}/msp/signcerts/*${ORG\u ADMIN\u HOME}/msp/admincerts
fi
导出核心\u对等\u MSPCONFIGPATH=${ORG\u ADMIN\u HOME}/msp
#加入频道
对等通道连接-b${GENESIS_FILE}
我通过在此之前注册另一个脚本获得管理员身份,该脚本执行以下操作:

#注册CA管理员
导出结构\u CA\u客户端\u HOME=$HOME/cas/${CA\u NAME}
fabric ca客户端注册-d-u${ENROLLMENT\u URL}
#注册组织管理员
fabric ca client register-d--id.name${ADMIN\u name}--id.secret${ADMIN\u PASSWORD}--id.attrs“hf.register.Roles=client,hf.register.Attributes=*,hf.Revoker=true,hf.GenCRL=true,ADMIN=true:ecert,abac.init=true:ecert”
我的问题是,如果我注册了组织管理员,并且能够注册为组织管理员,为什么我会得到
此标识不是管理员错误?这有什么意义吗

多谢各位


编辑:我现在正在做的事情(它是简化的,不是代码的直接副本,因此有一些更改主要与路径和文件夹有关)

我运行一个名为register org的容器,它执行以下操作:

#注册为CA管理员
fabric ca客户端注册-d-u${ENROLLMENT\u URL}
#获取CA证书
fabric ca客户端getcacert-d-u https://${ca_URL}-M${ORG_MSP_DIR}
#注册组织管理员
fabric ca client register-d--id.name${ADMIN\u name}--id.secret${ADMIN\u PASSWORD}--id.attrs“hf.register.Roles=client,hf.register.Attributes=*,hf.Revoker=true,hf.GenCRL=true,ADMIN=true:ecert,abac.init=true:ecert”
#注册为组织管理员
fabric ca客户端注册-d-u https://${ADMIN_NAME}:${ADMIN_PASSWORD}@${ca_URL}
#然后我下载${ORG\u ADMIN\u HOME}/msp/admincerts/cert.pem并保存它
下一个容器是对等体本身,我在其中执行以下操作:

#我将CERT.PEM文件上载到${CORE_PEER_MSPCONFIGPATH}/admincerts/CERT.PEM
#生成服务器TLS密钥和证书
fabric ca client enroll-d--enrollment.profile tls-u${enrollment\u URL}-M/tmp/tls--csr.hosts${PEER\u HOST}
#生成客户端TLS密钥和证书
fabric ca client enroll-d--enrollment.profile tls-u${enrollment\u URL}-M/tmp/tls--csr.hosts${PEER\u HOST}
#注册同侪
fabric ca client enroll-d-u${ENROLLMENT\u URL}-M${CORE\u PEER\u MSPCONFIGPATH}
#起始点
对等节点启动
最后,我运行join peer channel容器,其中我执行以下操作:

#我将CERT.PEM文件上载到${CORE_PEER_MSPCONFIGPATH}/admincerts/CERT.PEM
#注册为组织管理员
fabric ca客户端注册-d-u https://${ADMIN_NAME}:${ADMIN_PASS}@${ca_URL}
#加入频道
对等通道连接-b${GENESIS_FILE}
#它又失败了。

您确定管理员证书确实在对等方的管理员文件夹中吗

cp ${ORG_ADMIN_HOME}/msp/signcerts/* ${ORG_ADMIN_HOME}/msp/admincerts 

您是否在对等容器/VM中执行此操作

我不知道我还必须将管理员证书复制到对等方。我要试试看。谢谢你的回答。否则同伴怎么知道他是管理员?如果有人将自己的证书复制到自己的管理员文件夹中,但它不在对等机上,对等机怎么会有此信息?我想,由于管理员在同一CA注册,它只需通过调用它来检查其有效性。好的。所以我的顺序应该是:1。向CA注册组织管理员。2。向CA注册对等方。3。从对等方注册为管理员
cp${ORG\u ADMIN\u HOME}/msp/signcerts/*${ORG\u ADMIN\u HOME}/msp/admincerts
。5.从具有新结构的对等方注册为对等方\u CA\u CLIENT\u HOME=/path/to/peer。6.Expose CORE_PEER_MSPCONFIGPATH=/path/to/PEER/msp 7。使用对等节点启动运行对等节点。8.在cli上,注册为管理员,并将CORE_PEER_ADDRESS和其他变量设置为对等变量。9在cli上,运行对等加入。是否正确?对不起,因为格式问题。这个页面很难共享代码。直到星期一我才可以访问开发环境,所以我正在工作,所以只要我能测试它,我就要分享结果。再次感谢。