售前客服二维码
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!
脚本的最后一行仅用于显示在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-compose up -d rca-org0
sleep 5
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org0/ca/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org0/ca/admin
fabric-ca-client enroll -d -u https://rca-org0-admin:[email protected]:7053
sleep 5
fabric-ca-client register -d --id.name orderer1-org0 --id.secret ordererpw --id.type orderer -u https://0.0.0.0:7053
fabric-ca-client register -d --id.name admin-org0 --id.secret org0adminpw --id.type user -u https://0.0.0.0:7053
echo
fabric-ca-client identity list
第3步和第4步:调出RCA-ORG1和RCA-ORG2
脚本3_rca_org1.sh
docker-compose up -d rca-org1
sleep 5
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/ca/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org1/ca/admin
fabric-ca-client enroll -d -u https://rca-org1-admin:[email protected]:7054
sleep 5
fabric-ca-client register -d --id.name peer1-org1 --id.secret peer1PW --id.type peer -u https://0.0.0.0:7054
fabric-ca-client register -d --id.name peer2-org1 --id.secret peer2PW --id.type peer -u https://0.0.0.0:7054
fabric-ca-client register -d --id.name admin-org1 --id.secret org1AdminPW --id.type user -u https://0.0.0.0:7054
fabric-ca-client register -d --id.name user-org1 --id.secret org1UserPW --id.type user -u https://0.0.0.0:7054
echo
fabric-ca-client identity list
脚本4_rca_org2.sh
docker-compose up -d rca-org2
sleep 5
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org2/ca/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org2/ca/admin
fabric-ca-client enroll -d -u https://rca-org2-admin:[email protected]:7055
sleep 5
fabric-ca-client register -d --id.name peer1-org2 --id.secret peer1PW --id.type peer -u https://0.0.0.0:7055
fabric-ca-client register -d --id.name peer2-org2 --id.secret peer2PW --id.type peer -u https://0.0.0.0:7055
fabric-ca-client register -d --id.name admin-org2 --id.secret org2AdminPW --id.type user --id.attrs "abac.init=true:ecert" -u https://0.0.0.0:7055
fabric-ca-client register -d --id.name user-org2 --id.secret org2UserPW --id.type user -u https://0.0.0.0:7055
echo
fabric-ca-client identity list
结果目录分别是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 "Enroll Orderer"
# preparation
mkdir -p /tmp/hyperledger/org0/orderer/assets/ca
cp /tmp/hyperledger/org0/ca/admin/msp/cacerts/0-0-0-0-7053.pem /tmp/hyperledger/org0/orderer/assets/ca/org0-ca-cert.pem
mkdir -p /tmp/hyperledger/org0/orderer/assets/tls-ca
cp /tmp/hyperledger/tls-ca/admin/msp/cacerts/0-0-0-0-7052.pem /tmp/hyperledger/org0/orderer/assets/tls-ca/tls-ca-cert.pem
# for identity
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org0/orderer
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org0/orderer/assets/ca/org0-ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=msp
fabric-ca-client enroll -d -u https://orderer1-org0:[email protected]:7053
sleep 5
# for TLS
export FABRIC_CA_CLIENT_MSPDIR=tls-msp
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org0/orderer/assets/tls-ca/tls-ca-cert.pem
fabric-ca-client enroll -d -u https://orderer1-org0:[email protected]:7052 --enrollment.profile tls --csr.hosts orderer1-org0
sleep 5
cp /tmp/hyperledger/org0/orderer/tls-msp/keystore/*_sk /tmp/hyperledger/org0/orderer/tls-msp/keystore/key.pem
echo "Enroll Admin"
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org0/admin
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org0/orderer/assets/ca/org0-ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=msp
fabric-ca-client enroll -d -u https://admin-org0:[email protected]:7053
mkdir -p /tmp/hyperledger/org0/orderer/msp/admincerts
cp /tmp/hyperledger/org0/admin/msp/signcerts/cert.pem /tmp/hyperledger/org0/orderer/msp/admincerts/orderer-admin-cert.pem
mkdir -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.pem
echo "Org0 done"
该脚本的目的是为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 "Enroll Peer1"
# preparation
mkdir -p /tmp/hyperledger/org1/peer1/assets/ca
cp /tmp/hyperledger/org1/ca/admin/msp/cacerts/0-0-0-0-7054.pem /tmp/hyperledger/org1/peer1/assets/ca/org1-ca-cert.pem
mkdir -p /tmp/hyperledger/org1/peer1/assets/tls-ca
cp /tmp/hyperledger/tls-ca/admin/msp/cacerts/0-0-0-0-7052.pem /tmp/hyperledger/org1/peer1/assets/tls-ca/tls-ca-cert.pem
# for identity
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org1/peer1
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer1/assets/ca/org1-ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=msp
fabric-ca-client enroll -d -u https://peer1-org1:[email protected]:7054
sleep 5
# for TLS
export FABRIC_CA_CLIENT_MSPDIR=tls-msp
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer1/assets/tls-ca/tls-ca-cert.pem
fabric-ca-client enroll -d -u https://peer1-org1:[email protected]:7052 --enrollment.profile tls --csr.hosts peer1-org1
sleep 5
cp /tmp/hyperledger/org1/peer1/tls-msp/keystore/*_sk /tmp/hyperledger/org1/peer1/tls-msp/keystore/key.pem
echo "Enroll Peer2"
# preparation
mkdir -p /tmp/hyperledger/org1/peer2/assets/ca
cp /tmp/hyperledger/org1/ca/admin/msp/cacerts/0-0-0-0-7054.pem /tmp/hyperledger/org1/peer2/assets/ca/org1-ca-cert.pem
mkdir -p /tmp/hyperledger/org1/peer2/assets/tls-ca
cp /tmp/hyperledger/tls-ca/admin/msp/cacerts/0-0-0-0-7052.pem /tmp/hyperledger/org1/peer2/assets/tls-ca/tls-ca-cert.pem
# for identity
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org1/peer2
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer2/assets/ca/org1-ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=msp
fabric-ca-client enroll -d -u https://peer2-org1:[email protected]:7054
sleep 5
# for TLS
export FABRIC_CA_CLIENT_MSPDIR=tls-msp
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer2/assets/tls-ca/tls-ca-cert.pem
fabric-ca-client enroll -d -u https://peer2-org1:[email protected]:7052 --enrollment.profile tls --csr.hosts peer2-org1
sleep 5
cp /tmp/hyperledger/org1/peer2/tls-msp/keystore/*_sk /tmp/hyperledger/org1/peer2/tls-msp/keystore/key.pem
echo "Enroll Admin"
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org1/admin
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer1/assets/ca/org1-ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=msp
fabric-ca-client enroll -d -u https://admin-org1:[email protected]:7054
mkdir -p /tmp/hyperledger/org1/peer1/msp/admincerts
cp /tmp/hyperledger/org1/admin/msp/signcerts/cert.pem /tmp/hyperledger/org1/peer1/msp/admincerts/org1-admin-cert.pem
mkdir -p /tmp/hyperledger/org1/peer2/msp/admincerts
cp /tmp/hyperledger/org1/admin/msp/signcerts/cert.pem /tmp/hyperledger/org1/peer2/msp/admincerts/org1-admin-cert.pem
mkdir -p /tmp/hyperledger/org1/admin/msp/admincerts
cp /tmp/hyperledger/org1/admin/msp/signcerts/cert.pem /tmp/hyperledger/org1/admin/msp/admincerts/org1-admin-cert.pem
mkdir -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.pem
echo "Org1 done"
总体流程在很大程度上类似于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 "Enroll Peer1"
# preparation
mkdir -p /tmp/hyperledger/org2/peer1/assets/ca
cp /tmp/hyperledger/org2/ca/admin/msp/cacerts/0-0-0-0-7055.pem /tmp/hyperledger/org2/peer1/assets/ca/org2-ca-cert.pem
mkdir -p /tmp/hyperledger/org2/peer1/assets/tls-ca
cp /tmp/hyperledger/tls-ca/admin/msp/cacerts/0-0-0-0-7052.pem /tmp/hyperledger/org2/peer1/assets/tls-ca/tls-ca-cert.pem
# for identity
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org2/peer1
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org2/peer1/assets/ca/org2-ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=msp
fabric-ca-client enroll -d -u https://peer1-org2:[email protected]:7055
sleep 5
# for TLS
export FABRIC_CA_CLIENT_MSPDIR=tls-msp
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org2/peer1/assets/tls-ca/tls-ca-cert.pem
fabric-ca-client enroll -d -u https://peer1-org2:[email protected]:7052 --enrollment.profile tls --csr.hosts peer1-org2
sleep 5
cp /tmp/hyperledger/org2/peer1/tls-msp/keystore/*_sk /tmp/hyperledger/org2/peer1/tls-msp/keystore/key.pem
echo "Enroll Peer2"
# preparation
mkdir -p /tmp/hyperledger/org2/peer2/assets/ca
cp /tmp/hyperledger/org2/ca/admin/msp/cacerts/0-0-0-0-7055.pem /tmp/hyperledger/org2/peer2/assets/ca/org2-ca-cert.pem
mkdir -p /tmp/hyperledger/org2/peer2/assets/tls-ca
cp /tmp/hyperledger/tls-ca/admin/msp/cacerts/0-0-0-0-7052.pem /tmp/hyperledger/org2/peer2/assets/tls-ca/tls-ca-cert.pem
# for identity
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org2/peer2
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org2/peer2/assets/ca/org2-ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=msp
fabric-ca-client enroll -d -u https://peer2-org2:[email protected]:7055
sleep 5
# for TLS
export FABRIC_CA_CLIENT_MSPDIR=tls-msp
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org2/peer2/assets/tls-ca/tls-ca-cert.pem
fabric-ca-client enroll -d -u https://peer2-org2:[email protected]:7052 --enrollment.profile tls --csr.hosts peer2-org2
sleep 5
cp /tmp/hyperledger/org2/peer2/tls-msp/keystore/*_sk /tmp/hyperledger/org2/peer2/tls-msp/keystore/key.pem
echo "Enroll Admin"
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org2/admin
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org2/peer1/assets/ca/org2-ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=msp
fabric-ca-client enroll -d -u https://admin-org2:[email protected]:7055
mkdir -p /tmp/hyperledger/org2/peer1/msp/admincerts
cp /tmp/hyperledger/org2/admin/msp/signcerts/cert.pem /tmp/hyperledger/org2/peer1/msp/admincerts/org2-admin-cert.pem
mkdir -p /tmp/hyperledger/org2/peer2/msp/admincerts
cp /tmp/hyperledger/org2/admin/msp/signcerts/cert.pem /tmp/hyperledger/org2/peer2/msp/admincerts/org2-admin-cert.pem
mkdir -p /tmp/hyperledger/org2/admin/msp/admincerts
cp /tmp/hyperledger/org2/admin/msp/signcerts/cert.pem /tmp/hyperledger/org2/admin/msp/admincerts/org2-admin-cert.pem
mkdir -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.pem
echo "Org2 done"
我们可以看到此脚本与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进行交互。
这是生成所有必需的加密材料后网络的样子。
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!