超级账本HyperLedger: Fabric Node.js SDK使用时遇到的问题

Tags: HyperLedger 

目录

说明

这是“网易云课堂IT技术快速入门学院”使用的素材。操作、配置文件和代码讲解视频在网易云课堂《HyperLeger Fabric进阶实战课》第五章中。

HyperLedger Fabric的Node.js SDK的使用方法见:《超级账本HyperLedger:Fabric Node.js SDK的使用》,这里记录使用HyperLedger Fabric Node.js SDK时遇到的一些问题,示例代码在Github上:HyperLedger Fabric nodejs sdk examples

相关笔记

视频演示:

文字介绍:

问题汇总:

Node.js SDK: 加载pem证书,验证失败

如果,指定了pem证书为./tls/ca.crt

 40     var peer = client.newPeer(
 41         'grpcs://peer0.member1.example.com:7051',
 42         {
 43             pem: './tls/ca.crt',
 44             clientKey: './tls/client.key',
 45             clientCert: './tls/client.crt'
 46         }
 47     );

运行时出错,如下:

(node:93025) UnhandledPromiseRejectionWarning: Error: Input parameter does not appear to be PEM-encoded.
    at Object.module.exports.pemToDER (/Users/lijiao/Work/Docker/GOPATH/src/github.com/lijiaocn/hyperledger-fabric-sdks-usage/nodejs/node_modules/fabric-client/lib/utils.js:538:9)
    at Peer.getClientCertHash (/Users/lijiao/Work/Docker/GOPATH/src/github.com/lijiaocn/hyperledger-fabric-sdks-usage/nodejs/node_modules/fabric-client/lib/Remote.js:169:25)
    at Function.sendTransactionProposal (/Users/lijiao/Work/Docker/GOPATH/src/github.com/lijiaocn/hyperledger-fabric-sdks-usage/nodejs/node_modules/fabric-client/lib/Channel.js:1524:23)
    at Channel.sendTransactionProposal (/Users/lijiao/Work/Docker/GOPATH/src/github.com/lijiaocn/hyperledger-fabric-sdks-usage/nodejs/node_modules/fabric-client/lib/Channel.js:1459:18)
    at Channel.queryByChaincode (/Users/lijiao/Work/Docker/GOPATH/src/github.com/lijiaocn/hyperledger-fabric-sdks-usage/nodejs/node_modules/fabric-client/lib/Channel.js:1738:15)
    at Fabric_Client.newDefaultKeyValueStore.then.then (/Users/lijiao/Work/Docker/GOPATH/src/github.com/lijiaocn/hyperledger-fabric-sdks-usage/nodejs/client.js:59:20)
    at <anonymous>

原因是pem、clientkey、clientcert需要是证书的内容:

 40     var peer = client.newPeer(
 41         'grpcs://peer0.member1.example.com:7051',
 42         {
 43             pem: fs.readFileSync('./tls/ca.crt', { encoding: 'utf8' }),
 44             clientKey: fs.readFileSync('./tls/client.key', { encoding: 'utf8' }),
 45             clientCert: fs.readFileSync('./tls/client.crt', { encoding: 'utf8' }),
 46             'ssl-target-name-override': 'peer0.member1.example.com'
 47         }
 48     );

Node.js SDK: Invalid cert chain file

错误如下:

0715 16:34:03.966476000 140736069952384 ssl_transport_security.cc:664] Invalid cert chain file.
E0715 16:34:03.966695000 140736069952384 security_connector.cc:1062]   Handshaker factory creation failed with TSI_INVALID_ARGUMENT.
E0715 16:34:03.966702000 140736069952384 secure_channel_create.cc:121] Failed to create secure subchannel for secure name 'peer0.member1.example.com'
E0715 16:34:03.966709000 140736069952384 secure_channel_create.cc:154] Failed to create subchannel arguments during subchannel creation.

grpc issues 4689中说,说明输入的应当是文件内容?不是文件名

 40     var peer = client.newPeer(
 41         'grpcs://peer0.member1.example.com:7051',
 42         {
 43             pem: './tls/ca.crt',
 44             clientKey: './tls/client.key',
 45             clientCert: './tls/client.crt'
 46         }
 47     );

原因是pem、clientkey、clientcert需要是证书的内容:

 40     var peer = client.newPeer(
 41         'grpcs://peer0.member1.example.com:7051',
 42         {
 43             pem: fs.readFileSync('./tls/ca.crt', { encoding: 'utf8' }),
 44             clientKey: fs.readFileSync('./tls/client.key', { encoding: 'utf8' }),
 45             clientCert: fs.readFileSync('./tls/client.crt', { encoding: 'utf8' }),
 46             'ssl-target-name-override': 'peer0.member1.example.com'
 47         }
 48     );

参考

  1. HyperLedger Fabric Node.js sdk examples
  2. 《超级账本HyperLedger:Fabric Node.js SDK的使用》

HyperLedger

  1. hyperledger fabric 1.3.0 多节点手动部署
  2. 【视频】超级账本HyperLedger: Fabric源码走读(一):项目构建与代码结构
  3. 【视频】超级账本HyperLedger: Fabric Go SDK的使用
  4. 【视频】超级账本HyperLedger: Fabric使用kafka进行区块排序(共识)
  5. 超级账本HyperLedger: Fabric 1.2.0使用时遇到的问题
  6. 超级账本HyperLedger: Fabric的Chaincode开发过程中遇到的问题
  7. 【视频】超级账本HyperLedger: 为Fabric的Peer节点配置CouchDB
  8. 【视频】超级账本HyperLedger: Fabric从1.1.0升级到1.2.0
  9. 【视频】超级账本HyperLedger: Fabric源码走读(零):源代码阅读环境准备
  10. 【视频】超级账本HyperLedger: Fabric的Chaincode(智能合约、链码)开发、使用演示
  11. 超级账本HyperLedger: Fabric Node.js SDK使用时遇到的问题
  12. 超级账本HyperLedger: Fabric Golang SDK使用时遇到的问题
  13. 超级账本HyperLedger: FabricCA的级联使用(InterMediateCA)
  14. 【视频】超级账本HyperLedger: 使用Ansible进行Fabric多节点分布式部署(实战)
  15. 超级账本HyperLedger: Fabric掰开揉碎,一文解惑
  16. 超级账本HyperLedger: Fabric Channel配置的读取转换
  17. 【视频】超级账本HyperLedger: Fabric进阶,在已有的Channel中添加新的组织
  18. 超级账本HyperLedger: 超级账本工作组旗下项目介绍
  19. 超级账本HyperLedger: Fabric Chaincode(智能合约、链码)开发方法
  20. 【视频】超级账本HyperLedger: Fabric-CA的使用演示(两个组织一个Orderer三个Peer)
  21. 超级账本HyperLedger: FabricCA的基本概念与用法讲解
  22. 【视频】超级账本HyperLedger: Fabric的全手动、多服务器部署教程
  23. 超级账本HyperLedger: Explorer安装使用
  24. 【视频】超级账本HyperLedger: Fabric nodejs SDK的使用
  25. 超级账本HyperLedger: Fabric部署过程时遇到的问题汇总
  26. 超级账本HyperLedger: Cello部署和使用
  27. 超级账本HyperLedger: Fabric的基本概念与基础用法

推荐阅读

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: [email protected],备注网站合作

友情链接:  系统软件  程序语言  运营经验  水库文集  网络课程  微信网文  发现知识星球