05.Fabric核心模块之Cryptogen解析

版权声明:忠于祖国,忠于人民 https://blog.csdn.net/boss2967/article/details/84203675

陈述

主要讲Fabric核心模块中cryptogen的功能模块相关操作以及配置文件

Cryptogen

cryptogen模块主要用来生成组织结构和账号相关的文件,任何Fabric系统的开发通常都是从cryptogen模块开始的。在Fabric项目中,当系统设计完成之后第一项工作就是根据系统的设计来编写cryptogen的配置文件,然后通过这些配置文件生成相关的证书文件。

Cryptogen模块所使用的配置文件是整个Fabric项目的基石。
Cryptogen模块所使用的配置文件是整个Fabric项目的基石。
Cryptogen模块所使用的配置文件是整个Fabric项目的基石。

Cryptogen模块命令

cryptogen模块是通过命令行的方式运行的,一个cryptogen命令由命令行参数和配置文件两部分组成,通过执行命令cryptogen --help可以显示cryptogen模块的命令行选项,执行结果如下所示:

$ cryptogen --help
usage: cryptogen [<flags>] <command> [<args> ...]
Utility for generating Hyperledger Fabric key material
Flags:
  --help  Show context-sensitive help (also try --help-long and --help-man).
Commands:
   # 显示帮助信息
  `help [<command>...]
   # 根据配置文件生成证书信息。
  `generate [<flags>]	
   # 显示系统默认的cryptogen模块配置文件信息
  `showtemplate
   # 显示当前模块版本号
  `version`
   # 扩展现有网络
  `extend [<flags>]

Cryptogen模块配置文件

Cryptogen模块的配置文件用来描述需要生成的证书文件的特性,比如:有多少个组织有多少个节点,需要多少个账号等。这里我们通过一个cryptogen模块配置文件的具体例子来初步了解配置文件的结构,该例子是Fabric源代码中自带的示例 - crypto-config.yaml:

这个配置文件的名字可以根据自己的意愿进行自定义, 即: xxx.yaml

OrdererOrgs:					# 排序节点的组织定义
  - Name: Orderer				# orderer节点的名称
 	Domain: example.com			# orderer节点的根域名 
 	Specs:
	    - Hostname: orderer		# orderer节点的主机名
PeerOrgs:						# peer节点的组织定义
  - Name: Org1					# 组织1的名称
	Domain: org1.example.com	# 组织1的根域名
 	EnableNodeOUs: true			# 是否支持node.js
 	Template:					
	    Count: 2				# 组织1中的节点(peer)数目
	Users:
 	    Count: 1				# 组织1中的用户数目
  - Name: Org2
    Domain: org2.example.com
    EnableNodeOUs: true
    Template:
        Count: 2
    Users:
        Count: 1

说明

上述模板文件定义了一个orderer节点,这个orderer节点的名字为orderer,orderer节点的根域名为example.com,主机名为orderer。模板文件同时定义了两个组织,两个组织的名字分别为org1 和 org2,其中组织 org1 包含了2个节点和1个用户,组织 org2 包含2个点和1个用户。

除了Fabric源码中提供的例子,还可以通过命令cryptogen showtemplate获取默认的模板文件,在实际项目中稍加修改这些默认的模板文件即可使用。

生成证书文件

在任意目录下创建一个新的目录如: MyTestNetWork, 在该目录下左如下操作:

  • 编写yaml配置文件 - crypto-config.yaml
    • 一个排序节点: orader
    • 两个组织: java, go
      • go
        • peer节点数: 3个
        • 用户个数: 2个
        • 根域名:go.ydqy.com
      • java
        • peer节点数: 3个
        • 用户个数: 2个
        • 根域名: java.ydqy.com

命令

# 根据默认模板在对应目录下生成证书
$ cryptogen generate
# 根据指定的模板在指定目录下生成证书
$ cryptogen generate --config=./crycrypto-config.yaml --output ./crypto-config
	--config: 指定配置文件
	--output: 指定证书文件的存储位置, 可以不指定。会在对应路径生成目录,默认名字为:crypto-config

Fabric证书文件结构

  • orderer节点

    # 查看TestNetWork目录
    ydqy@ubuntu:~/TestNetWork$ tree -L 2
    .
    ├── crypto-config
    │   ├── ordererOrganizations	# orderer节点相关的证书文件
    │   └── peerOrganizations		# 组织相关的证书文件(组织的节点数, 用户数等证书文件)
    └── crypto-config.yaml			# 配置文件
    
    # 查看排序节点的证书目录, 进入到 ordererOrganizations 子目录中
    ydqy@ubuntu:ordererOrganizations$ tree -L 4
    .
    └── ydqy.com	# 根域名为ydqy.com的orderer节点的相关证书文件
        ├── ca	# CA服务器的签名文件
        │   ├── 94db924d3be00c5adda6ac3c3cb7a5f8b80868681c3dd04b58c2920cdf56fdc7_sk
        │   └── ca.ydqy.com-cert.pem
        ├── msp
        │   ├── admincerts	# orderer管理员的证书
        │   │   └── [email protected]
        │   ├── cacerts		# orderer根域名服务器的签名证书
        │   │   └── ca.ydqy.com-cert.pem
        │   └── tlscacerts	# tls连接用的身份证书
        │       └── tlsca.ydqy.com-cert.pem
        ├── orderers	# orderer节点需要的相关的证书文件
        │   └── ubuntu.ydqy.com
        │       ├── msp	# orderer节点相关证书
        │       └── tls	# orderer节点和其他节点连接用的身份证书
        ├── tlsca
        │   ├── de45aeb112ee820197f7d4d475f2edbeb1705d53a690f3537dd794b66de1d6ba_sk
        │   └── tlsca.ydqy.com-cert.pem
        └── users	# orderer节点用户相关的证书
            └── [email protected]
                ├── msp
                └── tls
    

    在实际开发中orderer节点这些证书其实不需要直接使用, 只是在orderer节点启动时指明项目的位置即可。

  • Peer节点

    进入到 peerOrganizations 子目录中, 我们详细介绍这些证书的种类和作用。由于每个组织的目录结构都是一样的, 所以我们只对其中一个组织的目录进行详细介绍。

    # 查看 peerOrganizations 子目录中内容
    ydqy@ubuntu:peerOrganizations$ tree -L 1
    .
    ├── go.ydqy.com		# go组织
    └── java.ydqy.com		# java组织
    # 进入go.ydqy.com 组织目录中
    ydqy@ubuntu:go.ydqy.com$ tree -L 4
    .
    ├── ca 	# 根节点签名证书
    │   ├── 4a367bf9e43142846e7c851830f69f72483ecb7a6def7c782278a9808bbb5fb0_sk
    │   └── ca.go.ydqy.com-cert.pem
    ├── msp	
    │   ├── admincerts	# 组织管理员的证书
    │   │   └── [email protected]
    │   ├── cacerts		# 组织的根证书
    │   │   └── ca.go.ydqy.com-cert.pem
    │   ├── config.yaml
    │   └── tlscacerts	# TLS连接身份证书
    │       └── tlsca.go.ydqy.com-cert.pem
    ├── peers
    │   ├── peer0.go.ydqy.com
    │   │   ├── msp
    │   │   │   ├── admincerts	# 组织的管理证书, 创建通道必须要有该证书
    │   │   │   ├── cacerts		# 组织根证书
    │   │   │   ├── config.yaml	
    │   │   │   ├── keystore	# 当前节点的私钥
    │   │   │   ├── signcerts	# 当前节点签名的数字证书
    │   │   │   └── tlscacerts	# tls连接的身份证书
    │   │   └── tls
    │   │       ├── ca.crt		# 组织的根证书
    │   │       ├── server.crt	# 验证本节点签名的证书
    │   │       └── server.key	# 当前节点的私钥
    │   ├── peer1.go.ydqy.com
    │   │   ├── msp
    │   │   │   ├── admincerts
    │   │   │   ├── cacerts
    │   │   │   ├── config.yaml
    │   │   │   ├── keystore
    │   │   │   ├── signcerts
    │   │   │   └── tlscacerts
    │   │   └── tls
    │   │       ├── ca.crt
    │   │       ├── server.crt
    │   │       └── server.key
    │   └── peer2.go.ydqy.com
    │       ├── msp
    │       │   ├── admincerts
    │       │   ├── cacerts
    │       │   ├── config.yaml
    │       │   ├── keystore
    │       │   ├── signcerts
    │       │   └── tlscacerts
    │       └── tls
    │           ├── ca.crt
    │           ├── server.crt
    │           └── server.key
    ├── tlsca
    │   ├── 3273887b1da2f27a6cbad3ac4acb0379df3d7858e0553a91fb9acb93da50b670_sk
    │   └── tlsca.go.ydqy.com-cert.pem
    └── users
        ├── [email protected]
        │   ├── msp
        │   │   ├── admincerts	# 组织的根证书, 作为管理身份的验证
        │   │   ├── cacerts		# 用户所属组织的根证书
        │   │   ├── keystore	# 用户私钥
        │   │   ├── signcerts	# 用户的签名证书
        │   │   └── tlscacerts	# tls连接通信证书, sdk客户端使用
        │   └── tls
        │       ├── ca.crt		# 组织的根证书
        │       ├── client.crt	# 客户端身份的证书
        │       └── client.key	# 客户端的私钥
        ├── [email protected]
        │   ├── msp
        │   │   ├── admincerts
        │   │   ├── cacerts
        │   │   ├── keystore
        │   │   ├── signcerts
        │   │   └── tlscacerts
        │   └── tls
        │       ├── ca.crt
        │       ├── client.crt
        │       └── client.key
        └── [email protected]
            ├── msp
            │   ├── admincerts
            │   ├── cacerts
            │   ├── keystore
            │   ├── signcerts
            │   └── tlscacerts
            └── tls
                ├── ca.crt
                ├── client.crt
                └── client.key
    

猜你喜欢

转载自blog.csdn.net/boss2967/article/details/84203675
今日推荐