在Chaincode上查询时,Hyperledger崩溃了
我正在使用Hyperledger Fabric v1.0,并且在尝试使用以下git存储库上的示例项目fabcar时遇到错误:git clone .git
我可以使用以下shell脚本启动所有容器:
./startFabric.sh
创建了对等体和通道,但是当我使用该命令时
node query.js
它崩溃时出现以下错误:创建客户端并设置钱包位置
设置钱包路径,并将用户PeerAdmin与应用程序检查用户注册关联,并在网络中设置查询URL生成查询分配transaction_id:27d48de27350bbeeb3adae69ec5e783d3af1c42af03230877f71c3343bfbc905错误:[client-utils.js]:sendPeersProposal - 拒绝承诺:错误:无法反序列化创建者身份,错误提供的身份无效,Verify()返回x509:由未知权限签名的证书(可能是因为“x509:ECDSA验证失败”,同时尝试验证候选权限证书“ca1.example”) at /home/eres_admin/hyperledger/fabric-samples/fabcar/node_modules/grpc/src/node/src/client.js:554:15从查询返回查询结果count = 1来自query = {错误:无法反序列化创建者identity,err提供的标识无效,Verify()返回x509:由未知权限签名的证书(可能是因为“x509:ECDSA验证失败”,同时尝试验证候选权限证书吃了“ca1.example”)/home/eres_admin/hyperledger/fabric-samples/fabcar/node_modules/grpc/src/node/src/client.js:554:15代码:2,元数据:元数据{ _internal_repr:{}}}响应错误:无法反序列化创建者身份,错误提供的身份无效,Verify()返回x509:由未知权限签名的证书(可能是因为尝试验证时“x509:ECDSA验证失败”候选机构证书“ca1.example”)
我正在使用节点版本6.11.4我是否需要使用任何其他版本或错误是由于其他原因。
回答如下:TL; DR机会是您正在使用的docker comp has已编码CA密钥的名称,但您重新生成了加密材料,从而更改了密钥和文件名。
我有完全相同的错误,发现这个错误发生,因为基本网络/ docker-compose.yaml有CA密钥硬编码。如果重新生成加密材料(例如,在basic-network中,则执行generate.sh),密钥文件名会更改。因此CA无法找到密钥。
重新生成加密材料后,您应该更改FABRIC_CA_SERVER_CA_KEYFILE
...
services:
ca.example:
image: hyperledger/fabric-ca
environment:
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_SERVER_CA_NAME=ca.example
- FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca1.example-cert.pem
- FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/4239aa0dcd76daeeb8ba0cda701851d14504d31aad1b2ddddbac6a57365e497c_sk
...
在此之后,query.js将正常工作。