在Hyperledger Fabric中,“ CA”创建的管理员和用户与“ cryptogen”创建的管理员和用户

时间:2019-12-04 13:34:15

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

我是Hyperledger Fabric的新手。我遇到了一个非常混乱的面料部分。

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

  • 专门谈论fabcar, 一个非常相似的事情是通过以下方式完成的:

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

那到底是怎么回事? 流量是多少? 一次又一次创建的这些管理员之间有什么区别?

我看到,CA服务器容器已安装了一个卷,它指向已经具有由cryptogen生成的证书和密钥的crypto-config文件夹。

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

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

3 个答案:

答案 0 :(得分:0)

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

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

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

然后,您必须将CA管理员与组织管理员区分开。您首先需要注册CA管理员,否则您将无法注册身份。而组织管理员只是该组织具有角色管理员的身份。

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

答案 1 :(得分:0)

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

  • Fabcar和商业用纸是两种不同的应用, 织物提供的作为织物样品的一部分。
  • Fabcar使用第一个网络,而Commercial Paper使用基本网络。
  • Fabcar在两个组织中的chaincode文件夹中都有其链码,而Commercial Paper在两个组织中的合同文件夹中都有其链码。
  • 管理员使用peer chaincode installpeer chaincode instantiate安装链码后(不要将此管理员与CA admin混淆​​,这只是一个管理通道的开发人员),合同对所有组件可用各自的渠道。
  • 现在我们需要某些应用程序来调用渠道已知的合同。 Fabcar和Commercial Paper在各自的应用程序文件夹中都有不同的应用程序。
  • 应用程序可以通过网关与我们的渠道进行交互,或者说是基础结构层。
  

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

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

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

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

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

  • Commercial Paper使用先前由密码原生成的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 :(得分:0)

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

现在,当您启动CA时,如果要使用cryptogen生成的相同证书和密钥,则将使用以下命令

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

ELSE如果您不想使用由密码生成的证书,则可以使用以下命令,并且您应该忘记由密码生成的证书,因为它们不再使用,您必须自己生成

fabric-ca-server init -b myorgadmin:myorgpw

差异是init命令

  

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

     

例如:如果要注册新用户,则需要进行身份验证   有凭据

将来,您可以使用由密码生成的用户证书,也可以通过对CA服务器进行身份验证来注册其他用户