hyperledger-fabric-sdk-go - Hyperledger Fabric 服务发现 - 如何获取对等 tls 证书?
问题描述
我正在运行一个由 3 个组织组成的超级账本网络(1.3)。在所有组件(对等节点也是如此)上启用了 TLS。
我正在使用 fabric-go-sdk 来触发事务。
在 fabric sdk 的日志文件中,我经常收到以下错误:[...]certificate signed by unknown authority[...]
当 sdk(为我自己组织的对等方初始化)尝试联系网络上不知道正确 tls 证书的其他节点时,似乎会发生这种情况。
我也明白,sdk 启动发现服务并尝试发现其他对等点(例如通道的对等点)。
但是我的 sdk 如何检索这些对等方的 tls ca 证书以便能够与他们联系?
到目前为止我发现的是,在 sdk 的发现服务中,有一个函数可以通过调用 PeerConfig() 方法将发现的对等点转换为 PeerConfig :
func asPeer(ctx contextAPI.Client, endpoint *discclient.Peer){
// ....
peerConfig, found := ctx.EndpointConfig().PeerConfig(url)
// ....
}
但是 PeerConfig 函数也不知道发现的对等点的 tls ca 证书是什么,因此无法仅通过查看提供的 url 来创建正确的 PeerConfig 对象。
将我的 sdk 配置为能够与其他对等方交谈的正确方法是什么?sdk从哪里获得其他组织的tls ca证书?他们真的被发现了吗?还是我必须手动提供?
解决方案
@Subby 不要与所有东西混淆
组织 1 - 组织 1CA
组织2-组织2CA
如果 go-sdk 的配置文件包含两个组织,那么您必须提及适当组织同行的 tlsca 证书
提及正确的 tlsca 证书是您的责任与服务发现无关
a certificate signed by unknown authority >>> means wrong certificate which is signed by an untrusted certificate authority
您需要做的就是提及适当组织的适当对等方的 tlsca 证书
来到服务发现
The rule of thumb is you must need at least one peer to discover other peers, so the application will use this peer to discover other peers
注意:必须配置
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
查看样本发现结果http://ideone.com/UmM0cK
推荐阅读
- python - 如何检查 date1 是否较小 date2 并在 pandas 数据框中的新列中分配值
- wso2 - 自定义 JWT 生成在 WSO2 APIM 3.1.0 中不起作用
- git - gitignore 文件有问题,如果目录名包含点字符
- azure - 使用查找活动的输出来查询数据库并使用 ADF 写入存储帐户中的 csv 文件
- c# - 如何从 C# XML 文档文件生成移动和桌面在线文档?
- spring-boot - Jooq 和 Spring boot:通过启动器升级 JOOQ:无法将 spring.jooq.sql-dialect' 绑定到 org.jooq.SQLDialect
- javascript - 在 Node+Express+Passport 应用程序中,res.locals.users 有效,但数据未定义
- visual-studio-code - macOS 上的 VSCode 编辑器。多行选定块的奇怪行为
- c# - 如何控制引用的命名空间
- python - 如何使用 CNN 修复欠拟合/为什么我的代码无法正确识别图像?