参考:http://baijiahao.baidu.com/s?id=1596614770784685300&wfr=spider&for=pc

cryptogen是Hyperledger Fabric提供的为网络实体生成加密材料(公私钥、证书等)的实用程序。这些证书代表一个身份,并允许在网络实体间通信和交易时进行签名和身份认证。

cryptogen使用一个包含网络拓扑的crypto-config.yaml文件,为文件中定义的组织和属于这些组织的实体生成一组证书和密钥。每个组织都配置了唯一的根证书(ca-cert),并包含了特定实体(peers和orders),这就形成了一种典型的网络结构——每个成员都有所属的CA。在hyperledger中文文档学习-4-构建第一个fabric网络这个例子中就有一个crypto-config.yaml文件,如下:

# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
## ---------------------------------------------------------------------------
# "OrdererOrgs" - Definition of organizations managing orderer nodes
# ---------------------------------------------------------------------------
OrdererOrgs:# ---------------------------------------------------------------------------# Orderer# ---------------------------------------------------------------------------- Name: OrdererDomain: example.com# ---------------------------------------------------------------------------# "Specs" - See PeerOrgs below for complete description# ---------------------------------------------------------------------------Specs:- Hostname: orderer
# ---------------------------------------------------------------------------
# "PeerOrgs" - Definition of organizations managing peer nodes
# ---------------------------------------------------------------------------
PeerOrgs:# ---------------------------------------------------------------------------# Org1# ---------------------------------------------------------------------------- Name: Org1Domain: org1.example.comEnableNodeOUs: true# ---------------------------------------------------------------------------# "Specs"# ---------------------------------------------------------------------------# Uncomment this section to enable the explicit definition of hosts in your# configuration.  Most users will want to use Template, below## Specs is an array of Spec entries.  Each Spec entry consists of two fields:#   - Hostname:   (Required) The desired hostname, sans the domain.#   - CommonName: (Optional) Specifies the template or explicit override for#                 the CN.  By default, this is the template:##                              "{{.Hostname}}.{{.Domain}}"##                 which obtains its values from the Spec.Hostname and#                 Org.Domain, respectively.# ---------------------------------------------------------------------------# Specs:#   - Hostname: foo # implicitly "foo.org1.example.com"#     CommonName: foo27.org5.example.com # overrides Hostname-based FQDN set above#   - Hostname: bar#   - Hostname: baz# ---------------------------------------------------------------------------# "Template"# ---------------------------------------------------------------------------# Allows for the definition of 1 or more hosts that are created sequentially# from a template. By default, this looks like "peer%d" from 0 to Count-1.# You may override the number of nodes (Count), the starting index (Start)# or the template used to construct the name (Hostname).## Note: Template and Specs are not mutually exclusive.  You may define both# sections and the aggregate nodes will be created for you.  Take care with# name collisions# ---------------------------------------------------------------------------Template:Count: 2# Start: 5# Hostname: {{.Prefix}}{{.Index}} # default# ---------------------------------------------------------------------------# "Users"# ---------------------------------------------------------------------------# Count: The number of user accounts _in addition_ to Admin# ---------------------------------------------------------------------------Users:Count: 1# ---------------------------------------------------------------------------# Org2: See "Org1" for full specification# ---------------------------------------------------------------------------- Name: Org2Domain: org2.example.comEnableNodeOUs: trueTemplate:Count: 2Users:Count: 1

声明了一个排序组织,两个节点组织,节点组织中分别一个用户带着有两个节点。在这里会为每个组织都配置一个根证书。

crypto-config.yaml是cryptogen工具使用的配置文件,cryptogen工具根据该配置文件生成加密材料。

⚠️但该文件名字并非固定,也可自定义,只需在cryptogen generate命令中指定对应文件即可。

由上面可知cryptogen是一个独立的可执行程序,源码能够在github.com/hyperledger/fabric/common/tools/cryptogen/上找到,首先在构建好的虚拟机上面查看是否成功运行了cryptogen:

vagrant@ubuntu-xenial:~/fabric-samples/first-network$ cryptogen --help
cryptogen: command not found

可见并没有

那么首先我们就要编译生成该可执行文件,有两种办法:

1)在下载的hyperledger/fabric路径下运行命令:

然后就能够看见生成了文件夹./build/bin,并在该文件夹下生成了可执行文件cryptogen:

vagrant@ubuntu-xenial:/opt/gopath/src/github.com/hyperledger/fabric$ make cryptogen
.build/bin/cryptogen
CGO_CFLAGS=" " GOBIN=/opt/gopath/src/github.com/hyperledger/fabric/.build/bin go install -tags "" -ldflags "-X github.com/hyperledger/fabric/common/tools/cryptogen/metadata.CommitSHA=325999f" github.com/hyperledger/fabric/common/tools/cryptogen
Binary available as .build/bin/cryptogen

然后运行:

vagrant@ubuntu-xenial:/opt/gopath/src/github.com/hyperledger/fabric$ cryptogen --help
usage: cryptogen [<flags>] <command> [<args> ...]用于生成Hyperledger Fabric密钥文件Flags:--help  显示帮助信息--help-long 显示详细帮助信息--help-manCommands:help [<command>...]显示下面命令的帮助信息.generate [<flags>]生成密钥文件showtemplate显示默认的配置模版version显示版本信息extend [<flags>]扩展现存网络

由上面可见成功编译成功

里面的命令中最重要的是generate命令:

vagrant@ubuntu-xenial:/opt/gopath/src/github.com/hyperledger/fabric$ cryptogen help generate
usage: cryptogen generate [<flags>]生成密钥证书Flags:--help                    Show context-sensitive help (also try --help-longand --help-man).--output="crypto-config"  指定放置证书的输出目录--config=CONFIG           指定使用的配置模版,不指定则使用cryptogen showtemplate中指定的默认模版,一般为crypto-config.yaml

最常见的命令为:

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

即根据crypto-config.yaml文件的配置,生成组织信息及其密钥证书等,保存在crypto-config目录下。

2)另一种方法是直接在fabric/common/tools/cryptogen/下执行go build命令

转载于:https://www.cnblogs.com/wanghui-garcia/p/10491836.html

hyperledge工具-cryptogen相关推荐

  1. hyperledge工具-configtxgen

    参考http://www.blockchainbrother.com/article/1339 configtxgen是Hyperledger Fabric提供的用于通道配置的实用程序,主要生成以下3 ...

  2. 超级账本(Hyperledger Fabric)之权限管理浅析

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 超级账本(Hyperledger Fabric)之权限管理浅析 超级账本是联盟链的代表,而其相对于共链(例如比特币,以太 ...

  3. fabric 启动peer_Hyperledger Fabric Peer 常用命令总结

    Peer 常用命令:#peer chaincode --help #peer channel list --help --logging-level #:debug,info,notice,warni ...

  4. Hyperledger Fabric 2.1 BYFN 测试用例

    本人也做 fabric 项目搭建.开发.浏览器.sdk.共识算法的测试.改进等工作.有问题或需要,可以加q 260261476,欢迎指导! Building Your First Network by ...

  5. 超级账本学习之三:创建超级账本网络

    超级账本网络的创建主要包含四个步骤: 创建网络拓扑结构,创建MSP相关资料并签名 创建通道配置信息 启动网络,并创建通道 安装并实例化链码 超级账本的学习资料Build Your First Netw ...

  6. Hyperledger Fabric网络环境手动配置及其链码自动化部署

    目录 5.1 网络环境的搭建 5.1.1 生成组织结构与身份证书 5.1.2 生成创世区块和通道 5.1.3 启动Fabric网络 5.1.4  创建Fabric-SDK-GO对象并建立通道 5.1. ...

  7. fabric 环境 搭建与安装

    fabric环境搭建与安装 一.前期系统配置 1.安装操作系统为Ubuntu20.04的虚拟机,使用虚拟机进行fabric环境搭建与安装 2.为虚拟机配置国内源,以配置清华源为例(方便后面安装软件) ...

  8. 区块链汽车租赁系统设计

    基于Fabric的共享汽车系统设计实现 一.项目描述 1. 项目意义 2. 项目实施阶段 第一阶段 第二阶段 二.项目设计 1.系统功能模块设计 2.证书颁发设计 3.智能合约设计 4.第二阶段设计 ...

  9. 关于官方的fabric-sample项目启动案例简单分析

    建立一个fabric网络2个Orgnizations(每个Org包含2个peer节点)+1个solo ordering service步骤简要解析(以官方的fabric-sample项目为例) 注:官 ...

最新文章

  1. java 窗口开始_Java窗口(JFrame)从零开始(3)——绝对布局
  2. 20172304 结对编程--四则运算实验总结
  3. Java设计模式(二) -- 单例模式
  4. oracle一体机flash卡,PCIe Flash卡设备的测试
  5. 【总结】C++逻辑与或
  6. CentOS 7.2 终端安装字体
  7. 通俗易懂!视觉slam第三部分——slam数学表示
  8. 【硬件】PIC32单片机烧写器以及线序说明
  9. CNVD-2022-10270/CNVD-2022-03672 向日葵RCE复现
  10. 用 CSS 实现 AirDrop 动效
  11. Mac下搭建Texstudio+Textlive(Mactex)
  12. 基于apache实现https
  13. vba九九乘法表代码_用五种方法利用EXCEL制作九九乘法表
  14. 牛客上C++的面试题和答案
  15. 10月25日 c语言 读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*
  16. C++ 文件查找 _findfirst、_findnext和_fineclose的使用
  17. 如何区别API、REST API、RESTful API和Web Service之间的异同
  18. 当虚拟筛选遇上高通量筛选
  19. 在java中画背景图片_JAVA如何添加背景图片?
  20. python之爬虫神器selenium:猫眼电影榜单并进行数据可视化

热门文章

  1. [BZOJ3595][SCOI2014]方伯伯的OJ(裂点Splay)
  2. HTML5-响应式的实现方式-弹性布局浅谈
  3. 如何在vue里面正确的引用 jquery 和 第三方插件
  4. 第二冲刺站立会议01
  5. Android 用户界面---定制组件(Custom Components)
  6. Server Application Unavailable
  7. 关于java的对象数组
  8. Win64 驱动内核编程-11.回调监控进线程句柄操作
  9. hdu3746 KMP的next数组应用,求项链首尾项链循环
  10. 【Groovy】自定义 Xml 生成器 BuilderSupport ( 继承 BuilderSupport 抽象类 | 在 createNode 方法中获取节点名称、节点属性、节点值信息 )