Hyperledger Fabric开发实战-05证书服务器

本文是在阅读《区块链开发实战-Hyperledger Fabric关键技术与案例分析》一书的同时,在实践中记录的一些实践步骤与经验分享。

Hyperledger Fabric开发实战-06 使用SDK

Hyperledger Fabric是一个联盟链,其特点是非授权用户不能接入,因此,Fabric有严格的帐号体系,用来保证其不可篡改的特性。

在之前的例子中,我看可以看到不管是启动Orderer节点和Peer节点,还是创建Channel,都需要设置msp,在规划系统的时候,虽然我们配置固定数量的节点和用户,但是如果系统发生变化,需要引入新的组织,或者组织中需要增加新的帐号和用户,这个该如何处理呢?
cryptogen模块对于这个问题的解决有一项配置,我们可以重新配置一个yaml文件,在里面指定起始位置start,例如

PeerOrgs:
  - Name: Org1
      Domain: org1.cmbc.com
      Template:
          Count: 3
          Start: 2

之前,我们为Org1制定了2个peer节点,现在的count为3,start为3,说明从2开始,新增3个

# 原来的
peer0.org1.cmbc.com
peer1.org1.cmbc.com

# 新增的3个peer
peer2.org1.cmbc.com
peer3.org1.cmbc.com
peer4.org1.cmbc.com

Fabric-ca

Fabric-ca项目是为了专门解决Fabric帐号问题而开发的一个开源项目,由Fabric-ca-server和Fabric-ca-client两个模块组成。

客户端通过sdk访问peer节点之前,首先要通过CA Intermediate Server的验证。

编译和安装

准备

首先需要安装系统相关依赖,我们使用sqlite3作为ca-server的数据库存储

sudo apt-get install libtool libltdl-dev
sudo apt-get install sqlite3

下载并编译

由于我们使用的是v1.1.0版本,为了保持一致性,ca上依然使用这个版本

cd $GOPATH/src/github.com/hyperledger
git clone http://gerrit.hyperledger.org//r/fabric-ca
cd $GOPATH/src/github.com/hyperledger/fabric-ca
git checkout v1.1.0

make fabric-ca-server
make fabric-ca-client



# 为了便于使用,拷贝到usr目录下
sudo cp $GOPATH/src/github.com/hyperledger/fabric-ca/bin/* /usr/local/bin
chmod -R 775 /usr/local/bin/fabric-ca-server
chmod -R 775 /usr/local/bin/fabric-ca-client

检查

fabric-ca-server version
fabric-ca-client version

启动

初始化

fabric-ca-server的init子命令用于初始化生成相关的配置文件

# 创建工作目录
mkdir ~/fabricwksp/04-ca/server
cd ~/fabricwksp/04-ca/server

# 生成配置文件,-b指定了ca-server的用户名和密码
fabric-ca-server init -b admin:adminpw

修改配置

主要的配置文件是目录系的fabric-ca-server-config.yaml文件,里面包含了ca-server的端口,调试模式,tls,ca,db等信息。我们所需要做的是将ca-server绑定到现有的组织中,在前面例子的基础上,我们绑定到Org1上,需要修改ca部分,将Org1的证书设置进去

ca:
  name: ca-org1
  keyfile: /home/ssj234/fabricwksp/02-helloworld/fabricconfig/crypto-config/peerOrganizations/org1.cmbc.com/ca/9284b1b376bd6291d1c7e9b23902d6b6f660663241e2139e7093608f04198820_sk
  certfile: /home/ssj234/fabricwksp/02-helloworld/fabricconfig/crypto-config/peerOrganizations/org1.cmbc.com/ca/ca.org1.cmbc.com-cert.pem
  chainfile: ca-chain.pem

启动ca-server

使用fabric-ca-server的start子命令启动服务器,需要制定配置文件所在的目录

fabric-ca-server start -H /home/ssj234/fabricwksp/04-ca/server --boot admin:adminpw

client的使用

通过Client,可以生成帐号,由于ca-server绑定的是Org1的证书,那么动态生成的帐号也就是Org1下的用户了。

设置目录

生产的帐号需要保存相关证书,因此,先生成一个文件夹保存这些证书

mkdir ~/fabricwksp/04-ca/client

使用enroll登记帐号
enroll会利用管理员帐号和密码注册,并获得管理员的MSP证书

export FABRIC_CA_CLIENT_HOME=/home/ssj234/fabricwksp/04-ca/client
fabric-ca-client enroll -M /home/ssj234/fabricwksp/04-ca/client -u http://admin:adminpw@localhost:7054

执行完命令后,我们会在client文件夹看到生成的相关文件

注册帐号

注册一个新的帐号peer4,密码为peer4pw,部门为org1.department1

fabric-ca-client register --id.name peer4 --id.type peer --id.affiliation org1.department1 --id.secret peer4pw -u http://localhost:7054

获取peer4的证书

首先,创建一个目录,用来保存peer4的msp

mkdir -p ~/fabricwksp/04-ca/peer4/msp/admincerts

执行enroll获取证书

fabric-ca-client enroll -M /home/ssj234/fabricwksp/04-ca/peer4/msp -u http://peer4:peer4pw@localhost:7054

复制管理员前面到peer4目录

cp /home/ssj234/fabricwksp/02-helloworld/fabricconfig/crypto-config/peerOrganizations/org1.cmbc.com/users/[email protected]/msp/signcerts/* ~/fabricwksp/04-ca/peer4/msp/admincerts

将共用TLS签名证书拷贝到peer4目录下

mkdir -p ~/fabricwksp/04-ca/peer4/tls
cp /home/ssj234/fabricwksp/02-helloworld/fabricconfig/crypto-config/peerOrganizations/org1.cmbc.com/peers/peer0.org1.cmbc.com/tls/*  ~/fabricwksp/04-ca/peer4/tls

在peer4的目录下,可以看到如下结构,这跟我们通过cryptogen生成的账号文件是一致的

├── msp
│   ├── admincerts
│   │   └── [email protected]
│   ├── cacerts
│   │   └── localhost-7054.pem
│   ├── intermediatecerts
│   │   └── localhost-7054.pem
│   ├── keystore
│   │   └── 75800c7f0f57af0eea8edfa8dc53fff45a3f98bb13281c645f18145b0c39d460_sk
│   └── signcerts
│       └── cert.pem
└── tls
    ├── ca.crt
    ├── server.crt
    └── server.key

你可能感兴趣的:(Hyperledger Fabric开发实战-05证书服务器)