Если вы хотите убедиться, что одна организация не маскируется под другую, в сертификатах, выданных организацией или для нее, должно быть что-то уникальное. Конечно, самый простой способ справиться с этим - иметь отдельный корневой CA для каждой организации. Также возможно иметь общий корень, но иметь разные промежуточные ЦС для каждой организации.
Но, учитывая, что ваш вопрос касается в основном использования единой матрицы-ca для выдачи сертификатов для нескольких организаций, это возможно с помощью функции идентификатора подразделения организации, представленной в версии 1.1 и более поздних. По сути, вы можете различать организации, использующие подразделение в выданных сертификатах. В Fabric CA v1.1 и более поздних версиях вы можете создавать разные филиалы для каждой организации, и при выдаче сертификатов в OU будет установлена принадлежность, связанная с удостоверением, в процессе регистрации. Вы можете либо доверять одному администратору для правильной регистрации идентификаторов для нескольких организаций, либо создать иерархический набор администраторов (то есть создать нескольких администраторов ЦС, но назначить каждому отдельную принадлежность, поскольку администраторы могут регистрировать пользователей только под своей собственной принадлежностью).
Затем в определениях MSP вы можете использовать файл config.yaml, чтобы указать подразделение, с которым нужно связать MSP. Например, если вы посмотрите на https://github.com/hyperledger/fabric/blob/release-1.1/sampleconfig/msp/config.yaml,, тогда
OrganizationalUnitIdentifiers:
- Certificate: "cacerts/cacert.pem"
OrganizationalUnitIdentifier: "COP"
означает, что эта организация идентифицируется корневым CA PLUS, имеющим OU = COP в сертификатах. Это также означало бы, что принадлежность к фабрике-ca будет также "COP"