美文网首页Hyperledger Fabric开发实战
Hyperledger Fabric开发实战-05证书服务器

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

作者: 史圣杰 | 来源:发表于2018-11-29 16:37 被阅读0次

    本文是在阅读《区块链开发实战-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/Admin@org1.cmbc.com/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
    │   │   └── Admin@org1.cmbc.com-cert.pem
    │   ├── cacerts
    │   │   └── localhost-7054.pem
    │   ├── intermediatecerts
    │   │   └── localhost-7054.pem
    │   ├── keystore
    │   │   └── 75800c7f0f57af0eea8edfa8dc53fff45a3f98bb13281c645f18145b0c39d460_sk
    │   └── signcerts
    │       └── cert.pem
    └── tls
        ├── ca.crt
        ├── server.crt
        └── server.key
    
    

    相关文章

      网友评论

        本文标题:Hyperledger Fabric开发实战-05证书服务器

        本文链接:https://www.haomeiwen.com/subject/tnrfcqtx.html