【问题标题】:Admin & users created by "CA" vs Admin & users created by "cryptogen" in Hyperledger FabricHyperledger Fabric 中“CA”创建的管理员和用户与“cryptogen”创建的管理员和用户
【发布时间】:2019-12-04 13:34:15
【问题描述】:

我是 Hyperledger Fabric 的新手。我遇到了织物的一个非常令人困惑的部分。

  • Cryptogen 用于为组织中的用户和管理员生成证书和密钥。

  • 具体说说fabcar, 一个非常相似的事情是由以下人员完成的:

    1. 注册管理员
    2. 在 fabcar 链码中使用 CA 注册和注册用户身份。
  • 当我看到 CA 服务器创建引导程序时,事情变得更加混乱 启动容器本身时的“管理员”身份。

那么到底发生了什么? 什么是流量? 这些管理员一次又一次地创建有什么区别?

我明白了,CA 服务器容器已挂载了一个卷,指向已包含由 cryptogen 生成的证书和密钥的 crypto-config 文件夹。

  • 为什么我们再次使用 -b 标志在 fabric-ca-server 上创建引导标识?我们已经拥有由 cryptogen 为管理员生成的管理员证书和密钥,并且它们已经安装在 Fabric ca 服务器容器上。
  • 为什么我们要再次在 fabcar 链代码中注册管理员,我们已经有了管理员的证书和密钥,不是吗(来自安装在 fabric ca 服务器容器上的卷)?
  • 为什么我们要在 fabcar 链码中注册和注册新用户,我们已经拥有一个用户的证书和密钥(在 fabcar 中),不是吗(来自安装在 fabric ca 服务器容器上的卷)?

类似的现有答案不是我想要的。我想要一个深入的见解。 谢谢。

【问题讨论】:

    标签: hyperledger-fabric blockchain hyperledger-fabric-ca


    【解决方案1】:

    好的,所以在连续挖掘 1 周后,我找到了问题的确切答案。 首先,我想确定织物样品应用程序的确切流程和结构。

    • Fabcar 和商业票据是两个不同的应用程序 由面料提供,作为面料样品的一部分。
    • Fabcar 使用 first-network,而 Commercial Paper 使用 basic-network。
    • Fabcar 的链代码位于两个组织的链代码文件夹中,而商业票据的链代码位于两个组织的合约文件夹中。
    • 在管理员使用peer chaincode installpeer chaincode instantiate 安装链码后(不要将此管理员与CA 管理员混淆,​​这只是一个管理通道的开发人员),合同对各个通道的所有组件都可用.
    • 现在我们需要某些应用程序来调用通道已知的合同。 Fabcar 和 Commercial Paper 在各自的应用程序文件夹中都有不同的应用程序。
    • 应用程序可以通过网关与我们的通道或底层结构层进行交互。

    Hyperledger Fabric SDK 提供网关抽象,以便 应用程序可以在委派网络的同时专注于应用程序逻辑 与网关的交互。网关和钱包做到了 直接编写 Hyperledger Fabric 应用程序。 Find here in the docs

    • 我们的应用程序需要一些身份才能使用底层结构层。在允许访问网络之前,网关会检查此身份的真实性。
    • Fabric 使用密钥和签名证书的概念来执行此身份验证。

    这里进入一个不同的概念,fabric 提供了两种认证架构(架构可能不是正确的词),

    • cryptogen - 通常用于开发或测试目的以生成密钥和证书
    • 证书颁发机构 - 不是一个新概念,fabric 使用它来生成证书。任何 CA 服务器都需要有 admin 才能允许生成证书。 在启动服务器本身时,此引导标识是使用带有 -b 选项和 username:password 参数的 fabric-ca-server start 创建的。

    回到fabric,在启动任何网络(基本网络或第一网络)之前,fabric 要求我们生成cryto-config。

    • Commercial Paper 使用此之前通过 cryptogen 生成的crypto-config 生成的证书和密钥来为应用程序生成身份。
    • Fabcar 使用 CA 生成证书和密钥。当我们在 Fabcar 中启动我们的 CA 服务器容器时,管理员已经注册。我们只是给了他注册时的证书和钥匙。新用户需要注册和注册(使用 CA 管理员身份完成)。

    私钥和公钥首先在本地生成,然后公开 然后将密钥发送到 CA,CA 返回一个编码证书 应用程序使用。然后将这三个凭据存储在 钱包,允许我们充当 CA 的管理员。 Find here in the docs

    因此,Fabcar 使用 CA 和 Commercial-Paper 使用 cryptogen 的原因并不是面料设计,而是出于选择。

    我将引用面料文档中的确切陈述来结束我的回答。

    • 当我们创建网络时,管理员用户字面上称为 admin 被创建为证书颁发机构 (CA) 的注册商。 我们的第一步是生成私钥、公钥和 X.509 使用enroll.js 程序的管理员证书。这个过程使用 证书签名请求 (CSR) — 私钥和公钥是 首先在本地生成,然后将公钥发送给 CA 它返回一个编码证书供应用程序使用。 然后将这三个凭证存储在钱包中,允许我们 充当 CA 的管理员。我们随后将注册 并注册一个新的应用程序用户,我们将使用该用户 应用程序与区块链交互。 Find here in the docs

    • addToWallet.js 是 Isabella 将用来加载的程序 她的身份存入她的钱包,issue.js 将使用这个身份 通过调用代表 MagnetoCorp 创建商业票据 00001 纸质合同。 Find here in the docs

    非常欢迎专家的任何更正。这些是我从代码观察中得出的结论。

    【讨论】:

      【解决方案2】:

      我不知道 fabcar 是做什么的,但也许我可以向您澄清一些 Hyperledger Fabric 概念。

      cryptogen 是一种开发工具,用于生成开发 Fabric 网络最初所需的所有(MSP 和 TLS 相关)加密内容。

      对于更严重的部署,您可以改用 Fabric-CA。 Fabric-CA 是一个证书颁发机构,它维护为您的组织注册的身份数据库,并允许您的注册参与者注册他们的证书。您还可以更新身份、撤销身份和证书等。

      然后您必须区分 CA 管理员和组织管理员。您首先注册 CA 管理员,否则您无法注册身份。组织管理员只是组织的角色管理员身份。

      通常,注册的 CA 管理员会生成所有身份。之后,在其他地方,组织管理员(或任何其他身份)通过指定注册期间声明的用户和密码来注册其证书。

      【讨论】:

      • 你对cryptogen和CA的解释没问题。但似乎它们不是我问题的答案。无论如何,非常感谢。
      【解决方案3】:

      一些理论:cryptogen 只是一个用 golang 编写的工具,它的作用是创建一个自签名的根 ca 和一些签名证书(组织管理员、用户、实体)

      现在当你启动 CA 时,如果你想使用由 cryptogen 生成的相同证书和密钥,那么你将使用下面的命令

      fabric-ca-server start -b myorgadmin:myorgpw -d
      

      如果你不想使用加密生成的证书,那么你可以使用下面的命令,你应该忘记加密生成的证书,因为它们不再使用,你必须自己生成

      fabric-ca-server init -b myorgadmin:myorgpw
      

      区别是init 命令

      引导 CA 服务器凭据是为了将来进行身份验证 目的

      例如:如果您想注册一个新用户,那么您需要进行身份验证 有凭据

      以后可以使用cryptogen生成的用户证书,也可以通过认证CA服务器来注册不同的用户

      【讨论】:

      • 如果你没问题,你可以接受答案并关闭它
      猜你喜欢
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多