我正在运行由3个组织组成的超级账本网络(1.3)。在所有组件(对等节点)上也启用了TLS。
我正在使用fabric-go-sdk触发交易。
在结构sdk的日志文件中,我经常遇到以下错误: [...]由未知权限签署的证书[...]
当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证书?他们被蜜蜂发现了吗?还是我必须手动提供它们?
答案 0 :(得分:1)
@Subby不要与所有东西混淆
Org1-org1CA
Org2-org2CA
如果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