无法在网络上使用Node SDK +相互TLS进行操作

时间:2019-12-05 16:43:52

标签: hyperledger-fabric hyperledger tls1.2

我的网络中有1个cli,1个ca,1个订购者,2个同级。 我不得不转移到3个订购者,并且我读到我需要实现TLS才能让他们交流。 我正在使用Hyperledger 1.4.3和Node SDK 1.4.4。

现在我的同级,cli,ca和订购者都具有TLS,自从我实例化并安装了链码,并且在必要时使用--tls调用了cli以来,一切似乎都正常了。 木筏订购者正确选举领导者,同伴通过八卦等交流。 因此,从网络的角度来看,一切似乎都很好。

现在,我需要更新我的Node.sdk应用程序,它与fabric-samples提供的应用程序非常相似。我曾经用来注册管理员,用户,然后使用以下方式连接到网络:

gateway = new Gateway()
await gateway.connect(ccp, { wallet, identity: 'user1', discovery: {enabled:false} });
const network = await gateway.getNetwork(channelName);

由于建立了网络,我习惯于调用合同并进行呼叫。 由于我正在使用TLS,因此该功能不再起作用。

我了解到我需要修改连接配置文件,该配置文件现在在对等方和证书颁发机构内部具有“ tlsCACerts”,因为我只对发布管理员用户证书感兴趣,然后对同等方进行查询。 对等方的tls证书指向 peerOrganization / ORGNAME / peers / PEERNAME / tls / ca.crt ,而CA的tls证书则指向 peerOrganization / ORGNAME / tlsca / ca.crt 。 在enrollAdmin和registerUser上,当我使用ca.enroll()函数时,我还添加了配置文件:“ tls”作为选项。

无论如何,我无法执行查询,因为当我调用getNetwork时,调试控制台上的答案是:

Unabled to initialize channel. Attempted to contact 1 Peers. Last error was Error: 2 UNKNOWN: access denied: channel [CHANNELNAME] creator org [ORGMSP].

我检查了peer1内部的联系人,然后看到

channel [CHANNELNAME]: MSP error: the supplied identity is not valid: x509: certificate signed by unknown authority

我被困在这里,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

TLS表示客户端请求服务器发送其证书,客户端将进行验证 相互TLS意味着客户端和服务器都需要彼此共享证书,并且彼此验证

因此,如果您在双向TLS上触发,则客户端还必须发送其证书

请按照半节点SDK教程中的详细说明进行操作

https://fabric-sdk-node.github.io/tutorial-mutual-tls.html