hyperledger-fabric - Hyperledger Fabric 网络中的多个组织具有相同的根 ca
问题描述
在所有结构示例和文档中,通常都有一个唯一的私有证书颁发机构为每个组织颁发证书。但是,在使用代码库时,我没有看到不同组织需要每个具有不同根 CA 的限制。
多个组织使用相同的根 CA 是否存在问题?证书中的主题字段是否足以用于不同结构工作流程中的身份验证?
解决方案
如果您想确保一个组织不会伪装成另一个组织,那么由某个组织颁发或为该组织颁发的证书必须具有独特性。当然,处理这个问题的最简单方法是为每个组织设置一个单独的根 CA。也可以有一个共同的根,但每个组织有不同的中间 CA。
但鉴于您的问题是关于基本上使用单个结构 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”
推荐阅读
- java - 为什么按钮不稳定
- tensorflow - 类型错误:variables_initializer() 缺少 1 个必需的位置参数:'var_list'
- networking - Google WIFI 为网络上的所有设备提供相同的公共 IP 地址
- c++ - 在 C++ 的嵌套 for 循环中迭代映射的时间复杂度是多少?
- spring-boot - 没有可用于服务的服务器:在 Netflix 功能区中路由时
- sql - BigQuery,SQL:过去整整 n 个月
- ubuntu - Ubuntu /var/www/html 目录上的非全局 PHP Composer SSH 正确方式?
- spring-boot - 如何在春季启动中检查帐户活动邮件?
- regex - 查找在 Linux vi 编辑器中不起作用的确切数字模式正则表达式
- python - 产生音频噪声