我们已经建立了光纤网络。在configtx.yaml中定义的联盟中已经有ORG1和ORG2。每个组织都有自己的根CA。而且,ORG2还具有一个中间CA。
configtx.yaml:
---
################################################################################
#
# ORGANIZATIONS
#
# This section defines the organizational identities that can be referenced
# in the configuration profiles.
#
################################################################################
Organizations:
- &OrdererOrg
Name: OrdererOrg
ID: ORDERER
MSPDir: crypto-config/ordererOrganizations/ordererorg/msp
Policies: &OrdererOrgPolicies
Readers:
Type: Signature
Rule: "OR('ORDERER.member')"
Writers:
Type: Signature
Rule: "OR('ORDERER.member')"
Admins:
Type: Signature
Rule: "OR('ORDERER.admin')"
- &ORG1
Name: ORG1
ID: ORG1
MSPDir: crypto-config/peerOrganizations/ORG1.com/msp
Policies: &Org1Policies
Readers:
Type: Signature
Rule: "OR('ORG1.member')"
Writers:
Type: Signature
Rule: "OR('ORG1.member')"
Admins:
Type: Signature
Rule: "OR('ORG1.admin')"
AnchorPeers:
- Host: peer0
Port: 7051
- &ORG2
Name: ORG2
ID: ORG2
MSPDir: crypto-config/ORG2/ORG2.com/msp
Policies: &Org2Policies
Readers:
Type: Signature
Rule: "OR('ORG2.member')"
Writers:
Type: Signature
Rule: "OR('ORG2.member')"
Admins:
Type: Signature
Rule: "OR('ORG2.admin')"
AnchorPeers:
- Host: peer1
Port: 7051
.
.
.
.
SingleMSPSolo:
<<: *ChannelDefaults
Orderer:
<<: *OrdererDefaults
Addresses:
- kiesnet-dev-orderer:7050
Organizations:
- *OrdererOrg
Consortiums:
DevConsortium:
Organizations:
- *ORG1
- *ORG2
SingleMSPChannel:
Consortium: DevConsortium
Application:
<<: *ApplicationDefaults
Organizations:
- *ORG1
- *ORG2
ORG2的根CA和中间CA将具有相同的MSPID(即“ ORG2”),并且最终用户将仅从中间CA服务器中注册。
这是问题所在。 在上面的configtx.yaml中,“ MSPDir:crypto-config / ORG / ORG2.com / msp”是根CA的msp目录路径,而不是中间目录。
但是,最终用户仅从中间服务器注册,并且当这些用户试图向ORG1的对等方查询/调用时,会出现以下错误:
Error: error endorsing query: rpc error: code = Unknown desc = access denied: channel [ORG1] creator org [ORG2] - proposal response: <nil>
如果我们使用从ORG2的根CA注册的最终用户的证书进行测试,则用户可以查询/调用ORG1的对等体。
我们如何告诉网络(渠道)信任从中间CA注册的用户,而不进行对等渠道更新或修改渠道配置文件?
其背后的业务原因是,从ORG2开始,将来可能会添加许多中间CA服务器,因此我们不想每次拥有新的中间CA时都更新通道配置。因此,一旦我们注册了ORG2的ROOT CA(第一次建立网络时),我们就希望信任从其中间CA注册的所有用户。
我认为,如果中间CA来自ORG2的根CA,应该有一种方法告诉网络信任所有从中间CA注册的用户。