问题标签 [hyperledger-fabric-sdk-go]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
64 浏览

hyperledger-fabric - 使用fabric-sdk-go连接网关失败

当我使用 fabric-sdk-go 连接我的本地网络时,它不起作用,因为对等 peer1.org1.adbc.com 的 tls.certificate 不存在或为空。在我使用shell的时候,一切都可以正常运行,并且可以在各个节点上调用invoke命令。这个网络是基于2.3版本的fabric示例。在此基础上,我在每个组织中添加了一个节点。这是错误信息。

这是 docker-compose.yaml

这是连接配置

这是我的代码:

模块是

如何像示例一样使用 fabric-sdk-go 连接我的网络?

0 投票
1 回答
117 浏览

hyperledger-fabric - Hyperledger Go SDK 客户端错误连接处于 TRANSIENT_FAILURE 远程错误:tls: bad certificate

我知道有几个像这样的错误,但我看到其中大部分都与测试网络有关,使用本地环境,我的情况不同。

我有一个使用 k8s 运行的区块链,它曾经在 V1.4 中运行,我们将其迁移到 V2.3,因此证书是在没有 SAN 的情况下生成的,但是为了使它们与新版本一起使用,我们使用了GODEBUG="x509ignoreCN=0"我可以连接的 env 变量使用控制台客户端对通道和配置进行更改,我可以连接节点 js 客户端并执行合同,我想使用 Go 客户端连接不同的应用程序,但配置有问题。

TRANSIENT_FAILURE在 Go 客户端和对等方中遇到错误,tls: bad certificate但证书与其他环境相同,我正在使用的 config.yaml 基于我在测试网络中的配置,该配置也有效。

奇怪的是,configPath 似乎不起作用,我需要单独添加用户以使其运行。

所以这是我的 config.yaml

这些是我的证书路径:

这些是来自客户端的日志:

这些是来自对等方的日志:

  • 一些奇怪的事情:我需要将用户添加到组织中,一些它无法从 configPath 中提取用户并且我得到一个错误user not found
  • 它正在寻找 msp/keystore 文件夹中的 tls 私钥,当然它不存在
  • 我尝试添加GODEBUG="x509ignoreCN=0"但它不会改变结果
  • 我为客户端生成了一个额外的 TLS 证书,将 SAN 作为“email:admin-tls@mycompany.com”添加到它们,并将其映射到具有相同结果的配置。
  • 我尝试添加和删除具有相同结果的 entityMatchers。

我还在它的服务器上做了一个 tcp 转储,它回答了Client hellowith Server hello,然后失败并出现 400bad request错误。

我使用了从这里这里引用的配置,但对我来说一切都很好。

我的想法不多了,我的配置对吗?为什么我需要强制客户端并且 configPath 不起作用?为什么要在 msp 密钥库中寻找 tls 密钥?但大多数情况下,如果证书很好并且通过了openssl verify对 ca.pem 的审核,为什么我会得到一个错误的证书?

谢谢

更新

这是我使用的证书信息openssl x509 -in certificate.pem -text -noout