如何避免Fabric CA成为单点故障?

5
如果我理解正确的话,区块链网络中的每个节点(通过八卦机制相互连接)只会接受来自使用由Fabric CA签名的公钥的HTTPS连接的其他节点的传入连接。
这是正确的吗?
据我所知,根CA成为了单点故障,因为有人可以对其进行修改,然后修改后的根CA证书将传播到节点,并最终导致任何节点都无法再相互连接。
这是正确的吗?
4个回答

3
让我试着回答这两个问题,可能更加直接。
问题1:如果我理解正确,通过"八卦"协议相互连接的区块链网络中的每个节点只会接受来自使用Fabric CA签名的公共密钥的HTTPS连接。是这样吗?
回答1:不,这是不正确的。您提到了“Fabric CA”,但是每个fabric区块链网络都有多个可信CA,其中每个CA可以是Fabric CA、其他CA或组合体。在这个模型中,没有单个受信任的CA根。此外,对等方之间的连接是通过GRPC而不是HTTPS进行的。
问题2:那么据我所知,根CA成为了单点故障,因为一个人可以修改它,从此修改后的根CA证书将传播到节点,最终没有节点可以再彼此连接。这正确吗?
回答2:不,这是不正确的。因为: a)单个Fabric CA可以在集群中运行; b)在区块链网络中有多个Fabric CA集群(或其他CA); c)对等方和订购者不直接连接到CA。它们依赖于本地文件系统或其副本的加密材料。 也不存在单点信任(SPoT),因为: a)存在多个根CA,没有共同的根密钥; b)影响谁信任谁的配置更新可能需要来自信任根的不同身份的多重签名。例如,更改信任策略可能需要来自区块链(或在Hyperledger术语中,通道)中每个组织的管理员的签名。

1

节点将接受来自其他节点和排序者的传入连接。您定义哪些成员将参与频道,即谁将参与您网络内的迷你区块链。然后,为每个成员创建工件。关于您应该创建的频道和工件的更多信息,请参见此处。有关您将使用的工具的更多信息此处

一旦您创建了频道并将节点加入其中,连接就由MSP控制。创建频道时,您为每个成员定义公钥。然后,MSP对其进行管理。

正如您所说,根CA可能会被修改,但这在任何其他具有任何其他根CA的系统中都可能发生。成员请求其密钥时,应启动Fabric CA服务器,然后停止它。此外,Hyperledger建议创建中间CA。


1
varnit和Urko的回答部分回答了问题。然而,在确定Fabric CA是否呈现SPoF时,需要考虑许多方面。首先,如varnit所述,可以使Fabric CA高度可用。但是,Fabric CA不是区块链网络运行所必需的,SDK或CLI可以使用它来获取用于配置网络中的对等方和排序器以及交易将要进行的通道的证书。可以使用cryptogen工具完全在没有Fabric CA的情况下创建所需的证书。在Fabric手册中定义了这里。要配置网络,将使用configtxgen工具。
在配置网络时,代表每个组织角色的证书存储在网络的创世块中,在配置通道时存储在通道的配置块中。因此,每个节点,无论是对等方还是订购方,都可以访问所有(根)证书。更改各个组织的根证书的唯一方法是获得经过验证的交易来更新为该网络定义的认可策略所同意的网络配置。

0
首先,我想说这个问题非常有趣。其次,我认为你对Hyperledger Composer的担忧是正确的,但是我认为解决方案是因为所有的Hyperledger Fabric组件都是基于容器的,所以它们可以很容易地进行扩展,因此在Docker swarm的情况下,我会使用`

`。
docker service scale hyper ledger-ca 5`

它将会扩展到5个容器或不同的节点,希望这回答了你的问题。如果还有什么需要解答,请告诉我。


我认为Romeo Kienzler先生并没有询问有关Hyperledger-Composer或如何对其进行扩展的问题。如果我误解了您的问题,我感到很抱歉。如果是这样,请告诉我。 - Urko
他问了关于单点故障的问题,我的回答是针对那个问题的。 - varnit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接