У нас уже настроена фабричная сеть.В консорциуме уже определены ORG1 и ORG2, определенные в configtx.yaml.Каждая организация имеет свои собственные корневые центры сертификации.И, кроме того, ORG2 имеет промежуточный ЦС.
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, и промежуточный ЦС будет иметь те же MSPID (то есть «ORG2») иконечные пользователи будут регистрироваться только с промежуточного сервера CA.
Вот проблема.в приведенном выше файле configtx.yaml «MSPDir: crypto-config / ORG / ORG2.com / msp» - это путь к каталогу msp ROOT CA, а не промежуточный.
Однако конечные пользователи регистрируются только изпромежуточный сервер, и когда эти пользователи пытаются запрашивать / вызывать одноранговый узел ORG1, мы получаем эту ошибку:
Error: error endorsing query: rpc error: code = Unknown desc = access denied: channel [ORG1] creator org [ORG2] - proposal response: <nil>
Если мы тестируем с сертификатом конечного пользователя, который был зарегистрирован из корневого CA ORG2, пользовательможет просто запросить / вызвать одноранговый узел ORG1.
Как мы говорим сети (каналу) доверять пользователям, зарегистрированным в промежуточном ЦС, без обновления канала равноправного узла или изменения файла конфигурации канала?
бизнес-причина этого заключается в том, что из ORG2 в будущем может быть добавлено много промежуточных серверов ЦС, поэтому мы не хотим обновлять конфигурацию канала каждый раз, когда у нас появляются новые промежуточные ЦС.Поэтому, зарегистрировав ROOT CA в ORG2 (когда мы настраиваем сеть в первый раз), мы хотим доверять всем пользователям, зарегистрированным в промежуточных CA.
Я думаю, что должен быть способ сообщитьсеть, чтобы доверять всем пользователям, зарегистрированным из любых промежуточных CA, если промежуточный CA из корневого CA ORG2.