zoukankan      html  css  js  c++  java
  • Fabric工具cryptogen介绍

     

    参考:

    https://www.jianshu.com/p/9d031a0606b7

    https://www.jianshu.com/p/d683f60e1ae8

    Hyperledger Fabric工具cryptogen介绍

    简介

    简单的说,cryptogen是用来生产fabric需要的证书的;这个生产过程是静态的。

    和cryptogen工具对等的是CA服务,是一种动态的证书生产环境;在开发和测试阶段,在环境中不需要部署CA,因此可以简单的使用cryptogen工具,当然在运行环境中也可以不使用CA服务器,而继续使用cryptogen。

    编译

    $ export GOPATH=~/go
    $ cd $GOPATH/src/github.com/hyperledger/fabric
    $ make cryptogen
    ...
    build/bin/cryptogen
    

    运行结果就在当前的build/bin/cryptogen目录下。

    如果在编译过程中遇到如下错误:

    vendor/github.com/miekg/pkcs11/pkcs11.go:26:18: fatal error: ltdl.h: No such file or directory
    

    那需要安装libtool-ltdl-devel包;在centos下可以运行下面命令,其他系统请自行上网查询:

    $ sudo yum install -y libtool-ltdl-devel
    

    使用

    配置文件

    cryptogen使用一个YAML格式的配置文件crypto-config.yaml

    OrdererOrgs:
      - Name: Orderer
        Domain: example.com
        Specs:
          - Hostname: orderer
    PeerOrgs:
      - Name: Org1
        Domain: org1.example.com
        Template:
          Count: 2
        Users:
          Count: 1
      - Name: Org2
        Domain: org2.example.com
        Template:
          Count: 2
        Users:
          Count: 2
    

    命令行

    $ cryptogen generate --config=./crypto-config.yaml
    

    运行结果在当前目录下生产一个crypto-config目录,内容如下:

    $ tree -L 2 crypto-config
    crypto-config
    ├── ordererOrganizations
    │   └── example.com
    └── peerOrganizations
        ├── org1.example.com
        └── org2.example.com
    

    每一个org生成一个目录(example.com, org1.example.com, org2.example.com),org目录下面的内容是一致的,我们看任何一个目录即可,例如查看org2.example.com:

    $ tree org2.example.com -L 2
    org2.example.com
    ├── ca                  # 包含org的根证书和Key
    │   ├── 2eb24f43416300254c6c3c4fbb6a306dc961cb0ccf05dc124cd8a198fe1107a8_sk
    │   └── ca.org2.example.com-cert.pem
    ├── msp                 # 包含org的根msp信息
    │   ├── admincerts
    │   ├── cacerts
    │   ├── config.yaml
    │   └── tlscacerts
    ├── peers              # 包含org下面的所有peer的证书
    │   ├── peer0.org2.example.com
    │   └── peer1.org2.example.com
    ├── tlsca              # 包含org的根tlsca证书和key
    │   ├── 7f6b5cf9dd03fd45c48b78a88f1ebb136b1ab55b7c4a58fdb15c59534d3ce2fd_sk
    │   └── tlsca.org2.example.com-cert.pem
    └── users              # 包含org下面所有用户的证书
        ├── Admin@org2.example.com      #管理员用户
        ├── User1@org2.example.com
        └── User2@org2.example.com
    

    再看一下peer和user的证书,由于他们的结构是一样的,下面给一个user(User2)的证书例子:

    $ tree org2.example.com/users/User2@org2.example.com/
    org2.example.com/users/User2@org2.example.com/
    ├── msp              # msp证书
    │   ├── admincerts
    │   │   └── User2@org2.example.com-cert.pem    # 同org的admin证书
    │   ├── cacerts
    │   │   └── ca.org2.example.com-cert.pem       # 同org的ca根证书
    │   ├── keystore
    │   │   └── 8654e4f70a1e0c8231f17886622f9bbfb531123dee1eb46dfe7b1e9695a3469e_sk
    │   ├── signcerts
    │   │   └── User2@org2.example.com-cert.pem    # User2的MSP证书
    │   └── tlscacerts
    │       └── tlsca.org2.example.com-cert.pem    # 同org的tlsca根证书
    └── tls
        ├── ca.crt                                 # 同org的tlsca根证书
        ├── client.crt                             # User2的 tls证书
        └── client.key                             # User2的 tls key
    

    证书的扩展

    当需要增加新的节点(peer)或者用户(user)的时候,需要为新节点/用户生成新的证书,当然老证书还得继续使用。这个时候需要用到extend命令。
    第一步,修改./crypto-config.yaml配置文件,增加peer或者user的count。

      - Name: Org2
        Domain: org2.example.com
        Template:
          #Count: 2
          Count: 4
        Users:
          #Count: 2
          Count: 4
    

    上述我们把peer和user扩展到4个。

    $ cryptogen extend --config=./crypto-config.yaml
    

    再看org2的成员:

    $ tree -L 2 crypto-config/peerOrganizations/org2.example.com
    crypto-config/peerOrganizations/org2.example.com
    ├── ca
    │   ├── 2eb24f43416300254c6c3c4fbb6a306dc961cb0ccf05dc124cd8a198fe1107a8_sk
    │   └── ca.org2.example.com-cert.pem
    ├── msp
    │   ├── admincerts
    │   ├── cacerts
    │   ├── config.yaml
    │   └── tlscacerts
    ├── peers
    │   ├── peer0.org2.example.com
    │   ├── peer1.org2.example.com
    │   ├── peer2.org2.example.com
    │   └── peer3.org2.example.com
    ├── tlsca
    │   ├── 7f6b5cf9dd03fd45c48b78a88f1ebb136b1ab55b7c4a58fdb15c59534d3ce2fd_sk
    │   └── tlsca.org2.example.com-cert.pem
    └── users
        ├── Admin@org2.example.com
        ├── User1@org2.example.com
        ├── User2@org2.example.com
        ├── User3@org2.example.com
        └── User4@org2.example.com
    

    peer2和 user2目录下面分别新增了两个目录;我们可以检查peer0/peer1/user1/user2的证书和原来是一样的,也就是没有更改已经签发的证书(包括根证书),只是新增的需要的证书。

  • 相关阅读:
    团队项目冲刺第十天
    gradle文件配置
    idea无Android项目
    php第二次实验报告
    最长回文字串(hdu 3068)
    优先队列实现哈弗曼最小权值
    最小生成树 克鲁斯卡尔(Kruskal)算法求最小生成树
    背包问题------ 分类: ACM 2015-08-03 20:57 1人阅读 评论(0
    Cent Savings (DP) 分类: ACM dp 2015-08-0
    Judging Troubles (multiset查找) 分类: ACM STL
  • 原文地址:https://www.cnblogs.com/show58/p/13180843.html
Copyright © 2011-2022 走看看