我在不同的计算机上设置了多个组织。
Machine 1
-> peer0.org1.example.com
-> ca.org1.example.com
-> orderer.example.com
Machine 2
-> peer0.org2.example.com
-> peer0.org3.example.com
我创建了一个由三个组织共享的频道。
现在的问题是,当我尝试从组织2和组织3访问数据时,它给我以下错误消息
未知:访问被拒绝:频道[mychannel]创建者单位[Org2MSP]
另一方面,如果我尝试通过CLI执行相同的查询,则交易将成功执行,而不会出现任何错误
我的问题是:我们可以为多个组织设置一个CA。如果是,如何解决拒绝访问的问题?
答案 0 :(得分:1)
要回答您的主要问题: 1个ca服务器是否可能包含1个以上的根身份。答案是肯定的Multiple CAs。该解决方案使用一个1个fabric-ca-server来提供1个以上的根身份。在Hyperledger架构中,根身份用作根Identity 1组织。
但是您应该使用这种架构吗?要回答这个问题,我们必须知道fabric-ca-server的角色以及在区块链网络(特定于Hyperledger)中如何处理身份。
那么您应该为多个组织使用1个fabric-ca-server吗?我的回答是不会。您想要的是所有组织彼此独立,并且一个ORG不能为另一个ORG构造身份。如果您使用1台服务器包含多个身份,则这也意味着私钥资料存储在1台服务器上,因此您可以为所有组织创建身份。
所以下一个问题如何解决拒绝访问的问题实际上是另一个问题。这很可能是由于HLF用来指向MSP文件夹结构内部特定部分的环境变量配置不正确。因此,您需要查看CLI内使用哪种环境变量,并在其他容器内使用相同的环境变量(如果您希望具有相同的标识)。
TL; DR; fabric-ca-server用于创建X509证书,该证书可用于构造MSP。 MSP是HLF内部的实际身份,最佳实践是对每个组织使用1个root-ca。