0

我在不同的机器上设置了多个组织。

Machine 1
 -> peer0.org1.example.com
 -> ca.org1.example.com
 -> orderer.example.com 

Machine 2
-> peer0.org2.example.com
-> peer0.org3.example.com

我创建了一个由所有三个组织共享的频道。

现在的问题是当我尝试从 Org 2 和 Org 3 访问数据时,它给了我以下错误消息

未知:访问被拒绝:频道 [mychannel] 创建者组织 [Org2MSP]

另一方面,如果我尝试通过 CLI 执行相同的查询,事务将成功执行而没有任何错误

我的问题是:我们可以为多个组织设置一个 CA。如果是,如何解决拒绝访问问题?

4

1 回答 1

2

回答您的主要问题:1 ca 服务器是否可以包含超过 1 个 root 身份。答案是肯定的多个CA。此解决方案使用一个 1 个 fabric-ca-server 来提供超过 1 个根身份。在 Hyperledger 结构中,根身份用作根身份 1 组织。

但是你应该使用这种架构吗?要回答这个问题,我们必须了解 fabric-ca-server 的角色以及在区块链网络中如何处理身份(特定于 Hyperledger。)

  1. 在区块链网络内以及不同组件(对等点、订购者、客户端)之间验证身份。HLF(Hyperledger Fabric)使用了MSP(Membership Service Provider)的抽象概念。在 HLF 的当前实现中,它使用 X509 证书来构造此身份。知道唯一的要求是 X509 证书是很重要的。您不需要fabric-ca-server。要构建 MSP 结构,需要在 MSP 证书磁盘上具有特定结构来构建身份。所有组件都需要(某些部分)这种结构。
  2. fabric-ca-server 用于创建 MSP 结构所需的 X509 证书。例如,当您想注册一个额外的 peer、orderer、client 等时使用它。一般来说,要获取所有这些材料,您可以使用 fabric-ca-client 或 SDK。客户端能够以默认 MSP 使用的正确文件夹结构导出此材料。

那么您应该为多个组织使用 1 个 fabric-ca-server 吗?我的回答是否定的。您想要的是所有组织相互独立,并且 1 个 ORG 不能为另一个 ORG 构建身份。如果您使用 1 台服务器来包含多个身份,这也意味着私钥材料存储在 1 台服务器上,因此您可以为所有组织创建身份。

所以下一个问题如何解决拒绝访问实际上是一个不同的问题。这很可能是由于 HLF 用于指向 MSP 文件夹结构内的特定部分的环境变量配置不正确。因此,您需要查看 CLI 中使用了哪些环境变量,并在其他容器中使用相同的环境变量(如果您想拥有相同的身份)。

TL;博士; fabric-ca-server 用于创建可用于构造 MSP 的 X509 证书。MSP 是 HLF 内部的实际身份,最佳实践是为每个组织使用 1 个 root-ca。

于 2019-01-11T12:16:14.183 回答