区块链研究实验室|Hyperledger Fabric的CA操作指南-part2

  • 时间:
  • 浏览:31
  • 来源:区块链技术网

正如您在readthedoc中所看到的那样,整个过程涉及许多命令。在本指南中,我们将分解它们,然后将它们分组为一系列Shell脚本。为了使流程合理,需要进行一些重新排列。我们将进行一些观察和重点介绍。

把它放在fabric-samples/下只是我的惯例。它可以在任何地方。只需确保您具有包含fabric-samples/bin/目录的PATH

cdfabric-samplesmkdirguide

复制两个配置文件:docker-compose.yaml和configtx.yaml。在本教程中,只需将脚本文件放在guide/中并执行它。

万一我们想重置所有内容并从步骤1开始,我们可以通过以下方式重置网络

cdguidedocker-composedownrm-rf/tmp/hyperledger

然后您可以再次从步骤1开始。

步骤1:启动TLS-CA

脚本:1_ca-tls.sh

docker-composeup-dca-tlssleep5exportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/tls-ca/crypto/tls-cert.pemexportFABRIC_CA_CLIENT_HOME=/tmp/hyperledger/tls-ca/adminfabric-ca-clientenroll-d-uhttps://tls-ca-admin:tls-ca-adminpw@0.0.0.0:7052sleep5fabric-ca-clientregister-d--id.namepeer1-org1--id.secretpeer1PW--id.typepeer-uhttps://0.0.0.0:7052fabric-ca-clientregister-d--id.namepeer2-org1--id.secretpeer2PW--id.typepeer-uhttps://0.0.0.0:7052fabric-ca-clientregister-d--id.namepeer1-org2--id.secretpeer1PW--id.typepeer-uhttps://0.0.0.0:7052fabric-ca-clientregister-d--id.namepeer2-org2--id.secretpeer2PW--id.typepeer-uhttps://0.0.0.0:7052fabric-ca-clientregister-d--id.nameorderer1-org0--id.secretordererPW--id.typeorderer-uhttps://0.0.0.0:7052echofabric-ca-clientidentitylist

我们将遍历整个脚本:

首先,我们启动TLS-CA容器。TLS-CA容器启动并运行后,发生了几件事

TLS-CA主目录映射到本地主机的/tmp/hyperledger/tls-ca/crypto/。如果我们要引用TLS-CA主目录中的任何内容,则可以引用此目录。

我们在本地主机中使用Fabric-CA-Client(客户端)。为客户端设置了两个参数。

我们提取TLS-CA根证书(tls-cert.pem)并将其保存在。

FABRIC_CA_CLIENT_TLS_CERTFILES中。这个名字有点不清楚。它是从TLS-CA验证TLS服务器证书的CA证书(请参阅上文了解关于TLS的Fabric-CA-Server会话)。

主目录设置为/ tmp-hyperledger/tls-ca/admin。加密资料将保存在此目录中。

在TLS-CA上的docker-compose文件(docker-compose.yaml中的第10行)中配置了引导程序ID名称(tls-ca-admin)和密钥(tls-ca-adminpw)。这是在TLS-CA数据库中注册的实体。

现在我们使用Fabric-CA-Client使用此引导ID名称和密码在TLS-CA(https://0.0.0.0:7052)上注册商。 结果保存在主目录/tmp-hyperledger/tls-ca/admin中。这是注册商的身份。

以此身份,我们使用Fabric-CA-Client在网络中注册五个网络组件。每个寄存器都有一个ID名称,密钥(本教程提供,但可以由CA生成)和类型。

结果是TLS-CA数据库现在保留了这五个实体信息。这些实体注册TLS-CA时,将在以后的步骤中使用它们。

脚本的最后一行仅用于显示在TLS-CA数据库中注册的实体,包括引导tls-ca-admin,以及在此脚本中注册的这五个组件。

下面是脚本执行后的结果。

我们还可以查看本地主机中的目录

tls-ca/crypto/:TLS-CA的Fabric-CA-Server Home的目录,映射到localhost。

tls-ca/admin/:Fabric-CA-Client在本地存储TLS-CA的注册器的位置

第2步:调出RCA-ORG0

脚本:2_rca-org0.sh

docker-composeup-drca-org0sleep5exportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org0/ca/crypto/ca-cert.pemexportFABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org0/ca/adminfabric-ca-clientenroll-d-uhttps://rca-org0-admin:rca-org0-adminpw@0.0.0.0:7053sleep5fabric-ca-clientregister-d--id.nameorderer1-org0--id.secretordererpw--id.typeorderer-uhttps://0.0.0.0:7053fabric-ca-clientregister-d--id.nameadmin-org0--id.secretorg0adminpw--id.typeuser-uhttps://0.0.0.0:7053echofabric-ca-clientidentitylist

第3步和第4步:调出RCA-ORG1和RCA-ORG2

脚本3_rca_org1.sh

docker-composeup-drca-org1sleep5exportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/ca/crypto/ca-cert.pemexportFABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org1/ca/adminfabric-ca-clientenroll-d-uhttps://rca-org1-admin:rca-org1-adminpw@0.0.0.0:7054sleep5fabric-ca-clientregister-d--id.namepeer1-org1--id.secretpeer1PW--id.typepeer-uhttps://0.0.0.0:7054fabric-ca-clientregister-d--id.namepeer2-org1--id.secretpeer2PW--id.typepeer-uhttps://0.0.0.0:7054fabric-ca-clientregister-d--id.nameadmin-org1--id.secretorg1AdminPW--id.typeuser-uhttps://0.0.0.0:7054fabric-ca-clientregister-d--id.nameuser-org1--id.secretorg1UserPW--id.typeuser-uhttps://0.0.0.0:7054echofabric-ca-clientidentitylist

脚本4_rca_org2.sh

docker-composeup-drca-org2sleep5exportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org2/ca/crypto/ca-cert.pemexportFABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org2/ca/adminfabric-ca-clientenroll-d-uhttps://rca-org2-admin:rca-org2-adminpw@0.0.0.0:7055sleep5fabric-ca-clientregister-d--id.namepeer1-org2--id.secretpeer1PW--id.typepeer-uhttps://0.0.0.0:7055fabric-ca-clientregister-d--id.namepeer2-org2--id.secretpeer2PW--id.typepeer-uhttps://0.0.0.0:7055fabric-ca-clientregister-d--id.nameadmin-org2--id.secretorg2AdminPW--id.typeuser--id.attrs"abac.init=true:ecert"-uhttps://0.0.0.0:7055fabric-ca-clientregister-d--id.nameuser-org2--id.secretorg2UserPW--id.typeuser-uhttps://0.0.0.0:7055echofabric-ca-clientidentitylist

结果目录分别是org1/ca/和org2/ca/。

有一点不同。当我们在RCA-ORG2中注册admin-org2时,我们放置了一个属性abac.init = true。当此admin-org2注册到RCA-ORG2中时,它将被放置在证书中。我们将在注册后进行检查。同时,admin-org1没有此属性。

此属性的使用是链接到链码的演示。网络运行后,我们将部署chaincode/abac/go。部署要求部署者具有此属性abac.init = true。在第11步中,我们将同时从admin-org1和admin-org2部署链码,并且由于缺少此属性,我们可以看到只有admin-org2可以部署,而admin-org1无法部署。

这是在四个脚本之后在每个CA数据库中注册的实体。请注意,注册尚未完成。在接下来的步骤中,我们将这些实体逐个注册到组织中。

步骤5:为org0注册实体

脚本5_enrollOrg0.sh

echo"EnrollOrderer"#preparationmkdir-p/tmp/hyperledger/org0/orderer/assets/cacp/tmp/hyperledger/org0/ca/admin/msp/cacerts/0-0-0-0-7053.pem/tmp/hyperledger/org0/orderer/assets/ca/org0-ca-cert.pemmkdir-p/tmp/hyperledger/org0/orderer/assets/tls-cacp/tmp/hyperledger/tls-ca/admin/msp/cacerts/0-0-0-0-7052.pem/tmp/hyperledger/org0/orderer/assets/tls-ca/tls-ca-cert.pem#foridentityexportFABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org0/ordererexportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org0/orderer/assets/ca/org0-ca-cert.pemexportFABRIC_CA_CLIENT_MSPDIR=mspfabric-ca-clientenroll-d-uhttps://orderer1-org0:ordererpw@0.0.0.0:7053sleep5#forTLSexportFABRIC_CA_CLIENT_MSPDIR=tls-mspexportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org0/orderer/assets/tls-ca/tls-ca-cert.pemfabric-ca-clientenroll-d-uhttps://orderer1-org0:ordererPW@0.0.0.0:7052--enrollment.profiletls--csr.hostsorderer1-org0sleep5cp/tmp/hyperledger/org0/orderer/tls-msp/keystore/*_sk/tmp/hyperledger/org0/orderer/tls-msp/keystore/key.pemecho"EnrollAdmin"exportFABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org0/adminexportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org0/orderer/assets/ca/org0-ca-cert.pemexportFABRIC_CA_CLIENT_MSPDIR=mspfabric-ca-clientenroll-d-uhttps://admin-org0:org0adminpw@0.0.0.0:7053mkdir-p/tmp/hyperledger/org0/orderer/msp/admincertscp/tmp/hyperledger/org0/admin/msp/signcerts/cert.pem/tmp/hyperledger/org0/orderer/msp/admincerts/orderer-admin-cert.pemmkdir-p/tmp/hyperledger/org0/msp/{admincerts,cacerts,tlscacerts,users}cp/tmp/hyperledger/org0/orderer/assets/ca/org0-ca-cert.pem/tmp/hyperledger/org0/msp/cacerts/cp/tmp/hyperledger/org0/orderer/assets/tls-ca/tls-ca-cert.pem/tmp/hyperledger/org0/msp/tlscacerts/cp/tmp/hyperledger/org0/admin/msp/signcerts/cert.pem/tmp/hyperledger/org0/msp/admincerts/admin-org0-cert.pemecho"Org0done"

该脚本的目的是为org0注册实体。有两个实体要注册:orderer1-org0和admin-org0。

我们将遍历此脚本。

org0的所有材料都将在/tmp/hyperledger/org0/下构建。

网络组件orderer1-org0将存储在orderer/中,用户admin-org0存储在admin/中。

首先,我们准备两个目录:orderer/assets/ca/和orderer/assets/tls-ca/,它们分别持有RCA-ORG0和TLS-CA的CA证书。我们从这些CA的映射卷中复制证书。

首先我们准备两个目录:orderer/assets/ca/和orderer/assets/tls-ca/,它们分别持有RCA-ORG0和TLS-CA的CA证书。我们从这些CA的映射卷中复制证书。

使用TLS访问RCA-ORG0和TLS-CA时,需要这两个CA证书。并在注册期间在FABRIC_CA_CLIENT_TLS_CERTFILES中指定。

我们开始注册orderer1-org0(身份和TLS),以及admin-org0(仅用于身份)。

对于orderer1-org0,

我们将org0/orderer/指定为Fabric-CA-Client主目录,这意味着结果将存储在此目录中。

为orderer1-org0的身份,我们指定msp/来保存结果,并将其注册到RCA-ORG0中。

对于orderer1-org0的TLS,我们指定tls-msp/来保存结果,并将其注册到TLS-CA中。

对于admin-org0,

我们将org0/admin/指定为Fabric-CA-Client主目录,这意味着结果将存储在此目录中。

标识为admin-org0,我们指定msp/来保存结果,并将其注册到RCA-ORG0中。

最后,我们将创建一个目录org0/msp/,其中包括以下目录和内容。它在构建结构网络配置时使用。

admincerts/

cacerts/

tlscacerts/

users/

我们复制这些证书,并在必要时重命名。

脚本完全执行后,我们将在/tmp/hyperledger/org0/中看到一些目录。

我们将首先检查org0/orderer/。我们看到两个目录:msp/和tls-msp/,在其中是orderer1-org0的加密材料。

在msp/中是身份。私钥保存在keystore/中,证书保存在signcert/中。

我们首先进行匹配,并确保私钥与证书中的公钥匹配。

然后,我们来看看证书,尤其是我们对主题和颁发者感兴趣。

我们看到这个身份证书的颁发者是RCA-ORG0,证书的主体(所有者)是order1-ORG0,OU=order,这是我们在注册期间在“type”中指定的(参见步骤2)。

在tls-msp/中可以看到类似的目录结构。无需重复上述所有步骤,我们将在tls-msp/signcert/中查看TLS服务器证书

我们看到这个TLS服务器证书的颁发者是TLS-CA。

Order1-org0的注册

颁发给orderer1.org0的证书。

现在我们有了org0的所有东西。

最后,我们准备了org0/msp/,当我们形成结构网络时非常有用。

步骤6:为org1注册实体

脚本6_enrollOrg1.sh

echo"EnrollPeer1"#preparationmkdir-p/tmp/hyperledger/org1/peer1/assets/cacp/tmp/hyperledger/org1/ca/admin/msp/cacerts/0-0-0-0-7054.pem/tmp/hyperledger/org1/peer1/assets/ca/org1-ca-cert.pemmkdir-p/tmp/hyperledger/org1/peer1/assets/tls-cacp/tmp/hyperledger/tls-ca/admin/msp/cacerts/0-0-0-0-7052.pem/tmp/hyperledger/org1/peer1/assets/tls-ca/tls-ca-cert.pem#foridentityexportFABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org1/peer1exportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer1/assets/ca/org1-ca-cert.pemexportFABRIC_CA_CLIENT_MSPDIR=mspfabric-ca-clientenroll-d-uhttps://peer1-org1:peer1PW@0.0.0.0:7054sleep5#forTLSexportFABRIC_CA_CLIENT_MSPDIR=tls-mspexportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer1/assets/tls-ca/tls-ca-cert.pemfabric-ca-clientenroll-d-uhttps://peer1-org1:peer1PW@0.0.0.0:7052--enrollment.profiletls--csr.hostspeer1-org1sleep5cp/tmp/hyperledger/org1/peer1/tls-msp/keystore/*_sk/tmp/hyperledger/org1/peer1/tls-msp/keystore/key.pemecho"EnrollPeer2"#preparationmkdir-p/tmp/hyperledger/org1/peer2/assets/cacp/tmp/hyperledger/org1/ca/admin/msp/cacerts/0-0-0-0-7054.pem/tmp/hyperledger/org1/peer2/assets/ca/org1-ca-cert.pemmkdir-p/tmp/hyperledger/org1/peer2/assets/tls-cacp/tmp/hyperledger/tls-ca/admin/msp/cacerts/0-0-0-0-7052.pem/tmp/hyperledger/org1/peer2/assets/tls-ca/tls-ca-cert.pem#foridentityexportFABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org1/peer2exportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer2/assets/ca/org1-ca-cert.pemexportFABRIC_CA_CLIENT_MSPDIR=mspfabric-ca-clientenroll-d-uhttps://peer2-org1:peer2PW@0.0.0.0:7054sleep5#forTLSexportFABRIC_CA_CLIENT_MSPDIR=tls-mspexportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer2/assets/tls-ca/tls-ca-cert.pemfabric-ca-clientenroll-d-uhttps://peer2-org1:peer2PW@0.0.0.0:7052--enrollment.profiletls--csr.hostspeer2-org1sleep5cp/tmp/hyperledger/org1/peer2/tls-msp/keystore/*_sk/tmp/hyperledger/org1/peer2/tls-msp/keystore/key.pemecho"EnrollAdmin"exportFABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org1/adminexportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer1/assets/ca/org1-ca-cert.pemexportFABRIC_CA_CLIENT_MSPDIR=mspfabric-ca-clientenroll-d-uhttps://admin-org1:org1AdminPW@0.0.0.0:7054mkdir-p/tmp/hyperledger/org1/peer1/msp/admincertscp/tmp/hyperledger/org1/admin/msp/signcerts/cert.pem/tmp/hyperledger/org1/peer1/msp/admincerts/org1-admin-cert.pemmkdir-p/tmp/hyperledger/org1/peer2/msp/admincertscp/tmp/hyperledger/org1/admin/msp/signcerts/cert.pem/tmp/hyperledger/org1/peer2/msp/admincerts/org1-admin-cert.pemmkdir-p/tmp/hyperledger/org1/admin/msp/admincertscp/tmp/hyperledger/org1/admin/msp/signcerts/cert.pem/tmp/hyperledger/org1/admin/msp/admincerts/org1-admin-cert.pemmkdir-p/tmp/hyperledger/org1/msp/{admincerts,cacerts,tlscacerts,users}cp/tmp/hyperledger/org1/peer1/assets/ca/org1-ca-cert.pem/tmp/hyperledger/org1/msp/cacerts/cp/tmp/hyperledger/org1/peer1/assets/tls-ca/tls-ca-cert.pem/tmp/hyperledger/org1/msp/tlscacerts/cp/tmp/hyperledger/org1/admin/msp/signcerts/cert.pem/tmp/hyperledger/org1/msp/admincerts/admin-org1-cert.pemecho"Org1done"

总体流程在很大程度上类似于org0(步骤5)。唯一的区别是,在org1中,我们有两个对等端,peer1-org1和peer2-org1。对每个对等方重复相同的过程。我们仅为org1注册一位管理员。

这是脚本完全执行后的org1目录结构。

现在,对于同级,我们有peer1/和peer2/,对于org1的管理员,有admin/。

同样,这里不再重复在org0中引入的内容(第5步),这里我们只检查每个组件和用户的证书。

peer1-org1,peer2-org1和admin-org1的身份证书。我们看到所有证书都是由RCA-ORG1颁发的。

peer1-org1和peer2-org1的TLS服务器证书。我们看到所有证书都是由TLS-CA颁发的。

此外,根据msp要求,对于peer1/msp/、peer2/msp/和admin/msp/我们需要一个admincerts/目录来保存该组织的管理证书(请参阅本脚本中的第62-69行)。

步骤7:为org2注册实体

脚本7_enrollOrg2.sh

echo"EnrollPeer1"#preparationmkdir-p/tmp/hyperledger/org2/peer1/assets/cacp/tmp/hyperledger/org2/ca/admin/msp/cacerts/0-0-0-0-7055.pem/tmp/hyperledger/org2/peer1/assets/ca/org2-ca-cert.pemmkdir-p/tmp/hyperledger/org2/peer1/assets/tls-cacp/tmp/hyperledger/tls-ca/admin/msp/cacerts/0-0-0-0-7052.pem/tmp/hyperledger/org2/peer1/assets/tls-ca/tls-ca-cert.pem#foridentityexportFABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org2/peer1exportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org2/peer1/assets/ca/org2-ca-cert.pemexportFABRIC_CA_CLIENT_MSPDIR=mspfabric-ca-clientenroll-d-uhttps://peer1-org2:peer1PW@0.0.0.0:7055sleep5#forTLSexportFABRIC_CA_CLIENT_MSPDIR=tls-mspexportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org2/peer1/assets/tls-ca/tls-ca-cert.pemfabric-ca-clientenroll-d-uhttps://peer1-org2:peer1PW@0.0.0.0:7052--enrollment.profiletls--csr.hostspeer1-org2sleep5cp/tmp/hyperledger/org2/peer1/tls-msp/keystore/*_sk/tmp/hyperledger/org2/peer1/tls-msp/keystore/key.pemecho"EnrollPeer2"#preparationmkdir-p/tmp/hyperledger/org2/peer2/assets/cacp/tmp/hyperledger/org2/ca/admin/msp/cacerts/0-0-0-0-7055.pem/tmp/hyperledger/org2/peer2/assets/ca/org2-ca-cert.pemmkdir-p/tmp/hyperledger/org2/peer2/assets/tls-cacp/tmp/hyperledger/tls-ca/admin/msp/cacerts/0-0-0-0-7052.pem/tmp/hyperledger/org2/peer2/assets/tls-ca/tls-ca-cert.pem#foridentityexportFABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org2/peer2exportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org2/peer2/assets/ca/org2-ca-cert.pemexportFABRIC_CA_CLIENT_MSPDIR=mspfabric-ca-clientenroll-d-uhttps://peer2-org2:peer2PW@0.0.0.0:7055sleep5#forTLSexportFABRIC_CA_CLIENT_MSPDIR=tls-mspexportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org2/peer2/assets/tls-ca/tls-ca-cert.pemfabric-ca-clientenroll-d-uhttps://peer2-org2:peer2PW@0.0.0.0:7052--enrollment.profiletls--csr.hostspeer2-org2sleep5cp/tmp/hyperledger/org2/peer2/tls-msp/keystore/*_sk/tmp/hyperledger/org2/peer2/tls-msp/keystore/key.pemecho"EnrollAdmin"exportFABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org2/adminexportFABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org2/peer1/assets/ca/org2-ca-cert.pemexportFABRIC_CA_CLIENT_MSPDIR=mspfabric-ca-clientenroll-d-uhttps://admin-org2:org2AdminPW@0.0.0.0:7055mkdir-p/tmp/hyperledger/org2/peer1/msp/admincertscp/tmp/hyperledger/org2/admin/msp/signcerts/cert.pem/tmp/hyperledger/org2/peer1/msp/admincerts/org2-admin-cert.pemmkdir-p/tmp/hyperledger/org2/peer2/msp/admincertscp/tmp/hyperledger/org2/admin/msp/signcerts/cert.pem/tmp/hyperledger/org2/peer2/msp/admincerts/org2-admin-cert.pemmkdir-p/tmp/hyperledger/org2/admin/msp/admincertscp/tmp/hyperledger/org2/admin/msp/signcerts/cert.pem/tmp/hyperledger/org2/admin/msp/admincerts/org2-admin-cert.pemmkdir-p/tmp/hyperledger/org2/msp/{admincerts,cacerts,tlscacerts,users}cp/tmp/hyperledger/org2/peer1/assets/ca/org2-ca-cert.pem/tmp/hyperledger/org2/msp/cacerts/cp/tmp/hyperledger/org2/peer1/assets/tls-ca/tls-ca-cert.pem/tmp/hyperledger/org2/msp/tlscacerts/cp/tmp/hyperledger/org2/admin/msp/signcerts/cert.pem/tmp/hyperledger/org2/msp/admincerts/admin-org2-cert.pemecho"Org2done"

我们可以看到此脚本与org1的脚本基本相同,除了现在所有内容都已应用到org2上。

我们只是对两个对等方peer1-org2和peer2-org2以及用户admin-org2的证书重复上一次检查。

peer1-org2,peer2-org2和admin-org2的身份证书。我们看到所有证书都是由RCA-ORG2颁发的。

peer1-org2和peer2-org2的TLS服务器证书。我们看到所有证书都是由TLS-CA颁发的。

特别是,我们具有属性abac.init:true的admin-org2(请参阅第4步)。在这里,我们可以看到证书中的属性。

现在我们已经为我们的网络生成了所有的身份证书和TLS服务器证书。

我们现在可以转到fabric network部分,除非需要添加更多的网络组件(orderers 或peers)或用户,否则我们将不会与这些CA进行交互。

这是生成所有必需的加密材料后网络的样子。

相关文章阅读:

区块链研究实验室|Hyperledger Fabric的CA操作指南-part1

区块链研究实验室|Hyperledger Fabric的CA操作指南-part3

----------------------------------------

译者:链三丰

译文出处:http://bitoken.world

----------------------------------------

猜你喜欢

区块链研究实验室 | 深入了解FabCar:Hyperledger Fabric的完整应用程序示例(part1)

概述HyperledgerFabric附带了许多应用示例,其中FabCar是一个完整的端到端应用程序。完整的区块链应用程序有两部分代码:在Fabric网络内部署和执行的Chai

2021-11-29

深入了解FabCar:Hyperledger Fabric的完整应用程序示例(part2)

这是本系列的第2部分。在第1部分中,我们介绍了Fabcar是什么以及应用程序架构。在本部分中,我们将介绍链代码,了解它的结构并使用CLI模拟链代码函数的流。区块链研究实验室|深

2021-11-29

深入了解FabCar:Hyperledger Fabric的完整应用程序示例(part3)

我们已经讲解完了FabCar应用的Chaincode部分。现在我们继续前进到客户端部分。我们在第2部分中介绍如何使用SDK与Chaincode进行交互。区块链研究实验室|深入了

2021-11-29

区块链研究实验室|使用Hyperledger Composer和React.js构建保险应用程序-part2

在本节中,我们将介绍如何通过RESTfulAPI将HyperledgeFabric网络与Web应用程序集成,并使用react.js作为前端。本教程中构建的Web应用程序仅是保单

2021-11-29

区块链研究实验室|使用Hyperledger Composer和React.js构建保险应用程序-part3

接下来,我们要创建将用于显示和实现添加新资产的功能的组件。在组件中创建新组件AddAsset.js:importReact,{Component}from'react';imp

2021-11-29