在所有结构示例和文档中,通常都有唯一的私有证书颁发机构为每个组织颁发证书。 但是,在使用代码库时,我看不到有一个限制,即不同的组织都需要各自具有不同的根CA。
为多个组织使用相同的根CA是否存在问题?证书中的主题字段是否足以在不同的架构工作流中用于身份验证?
答案 0 :(得分:2)
如果您要确保一个组织不会伪装成另一个组织,则对于由一个组织或为该组织颁发的证书必须有一些独特之处。当然,最简单的处理方法是每个组织都有一个单独的根CA。对于每个组织,也可以具有相同的根但具有不同的中间CA。
但是鉴于您的问题基本上是关于使用单个fabric-ca为多个组织颁发证书,因此可以使用v1.1及更高版本中引入的组织单位(OU)标识符功能。基本上,您可以在颁发的证书中使用OU区分组织。使用Fabric CA v1.1和更高版本,您可以为每个组织创建不同的从属关系,并且在颁发证书时,OU将被设置为在注册过程中与身份相关联的从属关系。您可以信任一个管理员来正确注册多个组织的标识,也可以创建一组层次结构的管理员(这意味着可以创建多个CA管理员,但每个管理员都可以分配不同的从属关系,因为管理员只能根据自己的从属关系注册用户)。>
然后在MSP定义中,可以使用config.yaml文件指定与MSP关联的OU。例如,如果您查看https://github.com/hyperledger/fabric/blob/release-1.1/sampleconfig/msp/config.yaml,那么
OrganizationalUnitIdentifiers:
- Certificate: "cacerts/cacert.pem"
OrganizationalUnitIdentifier: "COP"
表示此组织由证书中具有OU = COP的根CA PLUS标识。这也意味着fabric-ca中的从属关系也将是“ COP”。