我知道“此身份不是管理员”这一问题已得到广泛报道,但这是一个具体情况。我在这里和吉拉(Jira)读过很多问题,我觉得我的问题没有问题。
我想做的是从一个完全自定义的Hyperledger 1.4网络中的一个对等方加入一个通道,其中我没有使用过密码原。我遇到的问题正是这个问题:
2019-09-25 14:02:43.340 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
Error: proposal failed (err: bad proposal response 500: access denied for [JoinChain][global]: [Failed verifying that proposal's creator satisfies local MSP principal during channelless check policy with policy [Admins]: [This identity is not an admin]])
我知道我必须使用管理员身份来制定频道连接建议,这是通过以组织管理员身份注册来完成的。完成后,我只需加入同伴(以下代码)。当然,CORE_PEER_
变量已正确设置,并且ADMIN_NAME
和ADMIN_PASSWORD
存在。
# Get admin identity
ORG_ADMIN_HOME=/data/orgs/${ORG}/admin
ORG_ADMIN_CERT=/data/orgs/${ORG}/msp/admincerts/cert.pem
if [[ ! -d ${ORG_ADMIN_HOME} ]]; then
echo "[INFO] Enrolling admin '${ADMIN_NAME}' with ${CA_NAME} ..."
export FABRIC_CA_CLIENT_HOME=${ORG_ADMIN_HOME}
fabric-ca-client enroll -d -u https://${ADMIN_NAME}:${ADMIN_PASSWORD}@${CA_URL}
mkdir -p $(dirname "${ORG_ADMIN_CERT}")
cp ${ORG_ADMIN_HOME}/msp/signcerts/* ${ORG_ADMIN_CERT}
mkdir ${ORG_ADMIN_HOME}/msp/admincerts
cp ${ORG_ADMIN_HOME}/msp/signcerts/* ${ORG_ADMIN_HOME}/msp/admincerts
fi
export CORE_PEER_MSPCONFIGPATH=${ORG_ADMIN_HOME}/msp
# Join channel
peer channel join -b ${GENESIS_FILE}
我在此之前通过另一个执行下一个脚本的脚本注册了管理员身份:
# Enroll CA Admin
export FABRIC_CA_CLIENT_HOME=$HOME/cas/${CA_NAME}
fabric-ca-client enroll -d -u ${ENROLLMENT_URL}
# Register ORG Admin
fabric-ca-client register -d --id.name ${ADMIN_NAME} --id.secret ${ADMIN_PASSWORD} --id.attrs "hf.Registrar.Roles=client,hf.Registrar.Attributes=*,hf.Revoker=true,hf.GenCRL=true,admin=true:ecert,abac.init=true:ecert"
我的问题是,如果我注册了组织管理员并能够注册,为什么会出现This identity is not an admin
错误?有什么意义吗?
谢谢
编辑:我现在正在做的事情(它是简化的代码,不是代码的直接副本,因此有一些更改主要与路径和文件夹有关)。
我运行一个名为register-org的容器,该容器执行以下操作:
# Enroll as CA Admin
fabric-ca-client enroll -d -u ${ENROLLMENT_URL}
# Get CA Certs
fabric-ca-client getcacert -d -u https://${CA_URL} -M ${ORG_MSP_DIR}
# Register Org Admin
fabric-ca-client register -d --id.name ${ADMIN_NAME} --id.secret ${ADMIN_PASSWORD} --id.attrs "hf.Registrar.Roles=client,hf.Registrar.Attributes=*,hf.Revoker=true,hf.GenCRL=true,admin=true:ecert,abac.init=true:ecert"
# Enroll as Org Admin
fabric-ca-client enroll -d -u https://${ADMIN_NAME}:${ADMIN_PASSWORD}@${CA_URL}
# I download then ${ORG_ADMIN_HOME}/msp/admincerts/cert.pem and save it
下一个容器是对等体本身,我在这里做
# I upload the CERT.PEM file to ${CORE_PEER_MSPCONFIGPATH}/admincerts/cert.pem
# Generate Server TLS Key and Certs
fabric-ca-client enroll -d --enrollment.profile tls -u ${ENROLLMENT_URL} -M /tmp/tls --csr.hosts ${PEER_HOST}
# Generate Client TLS Key and Certificate
fabric-ca-client enroll -d --enrollment.profile tls -u ${ENROLLMENT_URL} -M /tmp/tls --csr.hosts ${PEER_HOST}
# Enroll peer
fabric-ca-client enroll -d -u ${ENROLLMENT_URL} -M ${CORE_PEER_MSPCONFIGPATH}
# Start peer
peer node start
最后,我在其中运行join-peer-channel容器:
# I upload the CERT.PEM file to ${CORE_PEER_MSPCONFIGPATH}/admincerts/cert.pem
# Enroll as Org Admin
fabric-ca-client enroll -d -u https://${ADMIN_NAME}:${ADMIN_PASS}@${CA_URL}
# Join the channel
peer channel join -b ${GENESIS_FILE}
# AND IT FAILS AGAIN.
答案 0 :(得分:1)
您确定管理员的证书确实在同级的admin文件夹中吗?
cp ${ORG_ADMIN_HOME}/msp/signcerts/* ${ORG_ADMIN_HOME}/msp/admincerts
您是否正在对等容器/ VM中执行此操作?