3.crypto-config.yaml配置文件分析和cryptogen工具使用[fabric2.2]

news2025/1/18 3:31:08

在fabric网络启动的过程中,会使用使用cryptogen 工具创建组织的证书文件,这时候就会用到crypto-config.yaml配置文件,例如fabric官方测试例程test-network中就用到了crypto-config-org1.yaml,crypto-config-org2.yaml,crypto-config-orderer.yaml三个配置文件。

crypto-config.yaml配置文件的结构十分简单,用于定义OrdererOrgs和PeerOrgs组织。每个组织中又可以定义多个节点(Spec)和用户(User)。

下面来看一下crypto-config-org1.yaml,crypto-config-org2.yaml,crypto-config-orderer.yaml配置文件。(这个几个文件在 ./fabric-samples/test-network/organizations/cryptogen文件夹下面)

一、crypto-config.yaml有什么用?

Fabric网络通过证书和密钥来管理和认证成员身份,经常需要生成证书文件。为了方便批量管理组织证书,Fabric基于Go语言的标准crypto库提供了cryptogen(crypto generator)工具。cryptogen是静态产生fabric所需证书的工具,CA服务是一种动态的证书生产方式。一般来说在开发和测试阶段可以简单的使用cryptogen工具来产生所需要的证书,在生产网络中使用CA服务。

cryptogen可以根据指定配置(crypto-config.yaml)批量生成所需要的密钥和证书文件,或查看配置模板信息。

二、一些关键名词解释

了解这些名词,就很容易看懂配置模板信息。

  • OrdererOrgs:定义管理orderer节点的组织

  • PeerOrgs:定义管理peer节点的组织

  • 每个组织应该包含如下信息

    • 名称(name),组织的名称

    • 组织域(domain),组织的命名域

    • 是否启用NodeOU,指定是否根据证书中的OU域来判断持有者角色

    • CA,组织的CA地址,包括Hostname域。

    • 若干个节点,节点包括几个域(可以通过Specs来指定,或者通过Template来自动顺序生成)

      • Hostname 主机名
      • CommonName
      • SANS

      通过Template来自动顺序生成默认通用名为:主机名.组织域。

      例如,域org1.example.com中Peer节点的名称可能为peer0.org1.example.com、peer1.org1.example.comdeng等。

  • 用户,通过用户模板自动生成除admin外的用户个数。

三、crypto-config-oederer.yaml

# ---------------------------------------------------------------------------
# "OrdererOrgs" - 定义管理排序节点的组织
# ---------------------------------------------------------------------------
OrdererOrgs: # 定义OrdererOrgs类型组织
  # ---------------------------------------------------------------------------
  # Orderer
  # ---------------------------------------------------------------------------
  - Name: Orderer  # 组织名
    Domain: example.com  # 组织域名
    EnableNodeOUs: true  # 启动EnableNodeOUs在msp下生成config.yaml文件
    # ---------------------------------------------------------------------------
    # "Specs" - See PeerOrgs for complete description
    # ---------------------------------------------------------------------------
    Specs:
      - Hostname: orderer #节点域名,可以指定多个节点
#      - Hostname: orderer1 # 举例
#      - Hostname: orderer2 # 举例
#      - Hostname: orderer3 # 举例

        SANS: # 除了主机名,通用名外的主题别名
          - localhost

四、crypto-config-org1.yaml

# ---------------------------------------------------------------------------
# "PeerOrgs" - 管理peer节点的组织的定义
# ---------------------------------------------------------------------------
PeerOrgs:
  # ---------------------------------------------------------------------------
  # Org1 组织1,可以安装这个模板定义多个组织
  # ---------------------------------------------------------------------------
  - Name: Org1
    Domain: org1.example.com
    EnableNodeOUs: true
    # ---------------------------------------------------------------------------
    # "Specs"   过Specs来指定节点信息
    # ---------------------------------------------------------------------------
    # Uncomment this section to enable the explicit definition of hosts in your
    # configuration.  Most users will want to use Template, below
    #
    # Specs 是一个 Spec 条目数组。每个 Spec 条目由两个字段组成:
    #   - Hostname:   (必需)所需的主机名。
    #   - CommonName: (可选的) 对于一个Spec来说,配置了CommonName,那么文件夹则命名为CommonName
    #                  如果没有配置CommonName,则文件名为:{{.Hostname}}.{{Domain}}
    #
    #                   默认格式     "{{.Hostname}}.{{.Domain}}"
    #
    #                 which obtains its values from the Spec.Hostname and
    #                 Org.Domain, respectively.
    # ---------------------------------------------------------------------------
    #   - Hostname: foo # implicitly "foo.org1.example.com"
    #     CommonName: foo27.org5.example.com # overrides Hostname-based FQDN set above
    #   - Hostname: bar
    #   - Hostname: baz
    # ---------------------------------------------------------------------------
    # "Template" 或者通常Template生成节点
    # ---------------------------------------------------------------------------
    # 允许定义来自模板 1 个或多个按顺序创建的主机。
    # 默认情况下,这从peer0 到 peer{{Count-1}} 。
    # 可以设置起始索引(Start)
    #
    # Note: Template 和 Specs并不相斥.
    # 可以一起使用创建爱节点
    # 注意节点名称不要冲突
    # ---------------------------------------------------------------------------
    Template:
      Count: 1
      SANS:
        - localhost
      # Start: 5
      # Hostname: {{.Prefix}}{{.Index}} # 默认
    # ---------------------------------------------------------------------------
    # "Users"
    # ---------------------------------------------------------------------------
    # Count:除 Admin 之外的用户帐户数
    # ---------------------------------------------------------------------------
    Users:
      Count: 1

注意:

  • crypto-config-org2.yaml,crypto-config-orderer.yam基本相同
  • crypto-config-org1.yaml,crypto-config-org2.yaml,crypto-config-orderer.yaml三个文件的内容可以卸载一个文件中,比如写在crypto-config.yaml中,执行同时生成所有组织的秘钥证书中

五、cryptogen工具使用

cryptogen主要功能包括:

  • generate,生成密钥和证书文件。
  • showtemplate,查看配置模板的信息。
  • extend,扩展当前密钥和证书文件。
  • version,查看版本信息

可以使用:

cryptogen --help […] # 查看帮助信息,进行学习

例如:cryptogen --help generate

Generate key material # 作用生成关键材料

Flags: # 有的参数
–help Show context-sensitive help (also try --help-long and–help-man).
–output=“crypto-config” The output directory in which to place artifacts # 放置输出文件的目录文件夹
–config=CONFIG The configuration template to use #指定使用的配置模板

生成组织省份相关相关

使用命令生成相应的密钥和证书文件

cd /root/fabric/scripts/fabric-samples/test-network/organizations/cryptogen/crypto-config # 进入到存放证书配置文件的文件夹

cryptogen generate --config=./crypto-config-orderer.yaml # 生成orderer组织的证书文件
cryptogen generate --config=crypto-config-org1.yaml # 生成org1组织的证书文件
cryptogen generate --config=./crypto-config-org2.yaml # 生成org2组织的证书文件

可以看到当前目录下的生成crypto-config目录:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kXcyTVG9-1677896503228)(assets/image-20230303111025-li3rvwb.png)]

crypto-config文件夹中生成ordererOrganizations和peerOrganizations两棵组织树。每棵组织树下都包括ca、tlsca、msp、orderers(或peers)、users等子目录。

最关键的是各个资源下的msp目录内容,存储了生成的代表MSP实体身份的各种证书文件,一般包括:

  • admincerts,管理员角色的身份证书文件。
  • cacerts,信任的CA根证书文件。
  • keystore,本实体的签名私钥文件。(签名)
  • signcerts,本实体的签名身份证书文件。(验证本节点)
  • tlscacerts,TLS连接信任的CA证书。
  • intermediatecerts(可选),信任的中间CA证书。
  • crls(可选),证书撤销列表。
  • config.yaml(可选),记录是否开启节点OU(Organizational Unit),根证书的位置和各个OU的OrganizationalUnitIdentif ier信息等。

peerOrganizations为例做了详细的注释。

[root@gtt crypto-config]# tree
.
├── ordererOrganizations #
│   └── example.com
│       ├── ca
│       │   ├── ca.example.com-cert.pem
│       │   └── priv_sk
│       ├── msp
│       │   ├── admincerts
│       │   ├── cacerts
│       │   │   └── ca.example.com-cert.pem
│       │   ├── config.yaml
│       │   └── tlscacerts
│       │       └── tlsca.example.com-cert.pem
│       ├── orderers
│       │   └── orderer.example.com
│       │       ├── msp
│       │       │   ├── admincerts
│       │       │   ├── cacerts
│       │       │   │   └── ca.example.com-cert.pem
│       │       │   ├── config.yaml
│       │       │   ├── keystore
│       │       │   │   └── priv_sk
│       │       │   ├── signcerts
│       │       │   │   └── orderer.example.com-cert.pem
│       │       │   └── tlscacerts
│       │       │       └── tlsca.example.com-cert.pem
│       │       └── tls
│       │           ├── ca.crt
│       │           ├── server.crt
│       │           └── server.key
│       ├── tlsca
│       │   ├── priv_sk
│       │   └── tlsca.example.com-cert.pem
│       └── users
│           └── Admin@example.com
│               ├── msp
│               │   ├── admincerts
│               │   ├── cacerts
│               │   │   └── ca.example.com-cert.pem
│               │   ├── config.yaml
│               │   ├── keystore
│               │   │   └── priv_sk
│               │   ├── signcerts
│               │   │   └── Admin@example.com-cert.pem
│               │   └── tlscacerts
│               │       └── tlsca.example.com-cert.pem
│               └── tls
│                   ├── ca.crt
│                   ├── client.crt
│                   └── client.key
└── peerOrganizations	#peer组织相关
    ├── org1.example.com   ##org1组织的相关材料
    │   ├── ca	###存放组织的CA根证书和对应的私钥文件     
    │   │   ├── ca.org1.example.com-cert.pem
    │   │   └── priv_sk
    │   ├── msp ###存放代表该组织的身份信息,有时还存放中间层证书和运维证书。
    │   │   ├── admincerts ####组织管理员的身份验证证书,被根证书签名。
    │   │   ├── cacerts  ####组织信任的CA根证书,同ca目录下文件
    │   │   │   └── ca.org1.example.com-cert.pem
    │   │   ├── config.yaml #### 指定是否开启OU(Organizational Unit),以及存放组织根证书路径和OU识别关键字
    │   │   └── tlscacerts  ####用于TLS验证的信任的CA证书,自签名
    │   │       └── tlsca.org1.example.com-cert.pem
    │   ├── peers ##存放属于该组织的所有Peer节点。
    │   │   └── peer0.org1.example.com ###第一个Peer节点,包括其MSP证书和TLS证书。
    │   │       ├── msp ####存放代表身份的相关证书和私钥文件
    │   │       │   ├── admincerts #####该Peer认可的管理员的身份证书。
    │   │       │   ├── cacerts  ######存放组织的CA根证书。
    │   │       │   │   └── ca.org1.example.com-cert.pem
    │   │       │   ├── config.yaml  #####指定是否开启OU
    │   │       │   ├── keystore  #####节点的身份私钥,用来签名。
    │   │       │   │   └── priv_sk
    │   │       │   ├── signcerts  #####验证本节点签名的证书,被组织根证书签名。
    │   │       │   │   └── peer0.org1.example.com-cert.pem
    │   │       │   └── tlscacerts  #####TLS连接用的CA证书
    │   │       │       └── tlsca.org1.example.com-cert.pem
    │   │       └── tls ####存放与tls相关的证书和私钥。
    │   │           ├── ca.crt  #####组织的TLS CA证书
    │   │           ├── server.crt  #####验证本节点签名的证书,被组织根证书签名。
    │   │           └── server.key  #####本节点的TLS私钥,用来签名。
    │   ├── tlsca ###存放属于该组织的TLS证书和对应私钥
    │   │   ├── priv_sk
    │   │   └── tlsca.org1.example.com-cert.pem
    │   └── users ###存放属于该组织的用户的实体
    │       ├── Admin@org1.example.com
    │       │   ├── msp
    │       │   │   ├── admincerts #####管理员用户的信息
    │       │   │   ├── cacerts
    │       │   │   │   └── ca.org1.example.com-cert.pem
    │       │   │   ├── config.yaml
    │       │   │   ├── keystore
    │       │   │   │   └── priv_sk
    │       │   │   ├── signcerts
    │       │   │   │   └── Admin@org1.example.com-cert.pem
    │       │   │   └── tlscacerts
    │       │   │       └── tlsca.org1.example.com-cert.pem
    │       │   └── tls
    │       │       ├── ca.crt
    │       │       ├── client.crt
    │       │       └── client.key
    │       └── User1@org1.example.com  #####第一个用户的信息
    │           ├── msp
    │           │   ├── admincerts
    │           │   ├── cacerts
    │           │   │   └── ca.org1.example.com-cert.pem
    │           │   ├── config.yaml
    │           │   ├── keystore
    │           │   │   └── priv_sk
    │           │   ├── signcerts
    │           │   │   └── User1@org1.example.com-cert.pem
    │           │   └── tlscacerts
    │           │       └── tlsca.org1.example.com-cert.pem
    │           └── tls
    │               ├── ca.crt
    │               ├── client.crt
    │               └── client.key
    └── org2.example.com
        ├── ca
        │   ├── ca.org2.example.com-cert.pem
        │   └── priv_sk
        ├── msp
        │   ├── admincerts
        │   ├── cacerts
        │   │   └── ca.org2.example.com-cert.pem
        │   ├── config.yaml
        │   └── tlscacerts
        │       └── tlsca.org2.example.com-cert.pem
        ├── peers
        │   └── peer0.org2.example.com
        │       ├── msp
        │       │   ├── admincerts
        │       │   ├── cacerts
        │       │   │   └── ca.org2.example.com-cert.pem
        │       │   ├── config.yaml
        │       │   ├── keystore
        │       │   │   └── priv_sk
        │       │   ├── signcerts
        │       │   │   └── peer0.org2.example.com-cert.pem
        │       │   └── tlscacerts
        │       │       └── tlsca.org2.example.com-cert.pem
        │       └── tls
        │           ├── ca.crt
        │           ├── server.crt
        │           └── server.key
        ├── tlsca
        │   ├── priv_sk
        │   └── tlsca.org2.example.com-cert.pem
        └── users
            ├── Admin@org2.example.com
            │   ├── msp
            │   │   ├── admincerts
            │   │   ├── cacerts
            │   │   │   └── ca.org2.example.com-cert.pem
            │   │   ├── config.yaml
            │   │   ├── keystore
            │   │   │   └── priv_sk
            │   │   ├── signcerts
            │   │   │   └── Admin@org2.example.com-cert.pem
            │   │   └── tlscacerts
            │   │       └── tlsca.org2.example.com-cert.pem
            │   └── tls
            │       ├── ca.crt
            │       ├── client.crt
            │       └── client.key
            └── User1@org2.example.com
                ├── msp
                │   ├── admincerts
                │   ├── cacerts
                │   │   └── ca.org2.example.com-cert.pem
                │   ├── config.yaml
                │   ├── keystore
                │   │   └── priv_sk
                │   ├── signcerts
                │   │   └── User1@org2.example.com-cert.pem
                │   └── tlscacerts
                │       └── tlsca.org2.example.com-cert.pem
                └── tls
                    ├── ca.crt
                    ├── client.crt
                    └── client.key

拓展证书文件

cryptogen extend用于扩展已有的密钥和证书文件

$ cryptogen extend --help # 使用帮助命令查看参数
usage: cryptogen extend [<flags>]

Extend existing network # 拓展存在的网络

Flags:
  --help                   Show context-sensitive help (also try --help-long and--help-man).
  --input="crypto-config"  当前已存在的密钥和证书文件的路径,默认为当前目录下的crypto-config目录。
  --config=CONFIG          指定所采用的配置模板文件的路径

# 例如,修改配置文件org3-crypto.yaml,添加新的组织org3,扩展已有的密钥和证书文件。
$ cryptogen extend --config ./org3-crypto.yaml --input crypto-config

在这里插入图片描述

查看配置模板信息和查看版本信息

# 这两个命令很简单,直接使用命令即可
$ cryptogen  showtemplate
$ cryptogen version

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/387182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java实例解析类图中【关联、组合和聚合】的区别

总目录链接==>> AutoSAR入门和实战系列总目录 文章目录 聚合Composition聚合与组合的区别关联是两个独立类之间的关系,它通过它们的对象建立关联。关联可以是一对一、一对多、多对一、多对多。在面向对象的编程中,一个对象与另一个对象通信以使用该对象提供的功能和服…

轮盘赌选择法

轮盘赌选择原理 轮盘赌选择法&#xff08;roulette wheel selection&#xff09;是最简单也是最常用的选择方法&#xff0c;在该方法中&#xff0c;各个个体的选择概率和其适应度值成比例&#xff0c;适应度越大&#xff0c;选中概率也越大。 从图中可以看出一等奖、二等奖、…

Rust学习总结之数组,元组,结构体用法

学过数据结构的都知道有这么一个公式&#xff0c;程序数据结构算法&#xff0c;好的数据结构能大大降低算法设计的复杂度&#xff0c;也能更好的为算法服务。了解一门新的计算机编程语言其数据结构是必须首先要学的&#xff0c;这有利于对该语言的理解和快速上手。本文将对Rust…

vue引入cdn Vue 优化Vue引入 cdn vue cdn Vue优化引入CDN vue 项目 CDN优化

vue引入cdn Vue 优化Vue引入 cdn vue cdn Vue优化引入CDN vue 项目 CDN优化未引入 CDN前 main.js更改CDN方式引入在 vue.config 中引入 CDNindex.html 加载 cdn资源使用CDN引入资源后的main.js如果引入CDN后 组件不生效CDN 服务商推荐未引入 CDN前 main.js // 依赖使用 npm 方…

Windows server 2003怎么安装iis?Windows server 2003安装IIS教程

Windows 2008系统服务器安装IIS之前已经分享过了&#xff0c;和Windows 2003完全不同&#xff0c;今天飞飞将详细地和你分享Windows server 2003卸载和安装IIS的步骤方法&#xff0c;希望可以帮助到你~ 1、首先进入服务器&#xff0c;确定下服务器是否有安装IIS&#xff0c;有…

漫谈数据库表设计及索引设计

一.数据库表设计 在数据库表设计上有个很重要的设计准则&#xff0c;称为范式设计。 什么是范式设计&#xff1f; 范式来自英文Normal Form&#xff0c;简称NF。MySQL是关系型数据库&#xff0c;但是要想设计—个好的关系&#xff0c;必须使关系满足一定的约束条件&#xff0c…

论如何用C语言的数组手撕一棵特殊的完全二叉树----堆

目录 0.前言 1. 用数组表示存储一棵完全二叉树 2. 数组表示的完全二叉树的性质 3. 堆的基本概念 3.1 堆的核心性质 3.2 堆顶的性质 3.3 堆的单支性质 3.4 堆的左右支关系 4. 用代码实现堆 4.1 堆类的实现 4.2 堆的初始化 4.3 堆的销毁 4.4 获取堆顶的数据 4.5 …

这款 Python 工具进行数据分析及数据可视化真的很棒啊

前言 大家好&#xff0c;今天我们以全国各地区衣食住行消费数据为例&#xff0c;来分析2022年中国统计年鉴数据&#xff0c;统计全国各地人民的消费地图&#xff0c;看看&#xff1a; 哪个省份的人最能花钱 哪个省份的人最舍得花钱 哪个省份的人最抠门 全国各地区人民在吃、穿…

一文读懂SpringBoot整合Elasticsearch(一)

&#xff08;本篇文章主要介绍Spring Boot如何整合Elasticsearch&#xff0c;包括基本配置、数据操作、搜索功能等方面。&#xff09; 一、前言 Elasticsearch是一款全文搜索引擎&#xff0c;可用于快速、准确地存储、搜索和分析大量数据。而Spring Boot是一款快速开发框架&a…

JUC【Callable、ReentrantLock、Semaphore、CountDownLatch】

JUC > java.util.concurrent JUC标准库提供的多线程安全相关的包 Callable 接口声明带返回值的任务 类似于Runnable,都是用来描述这个线程的工作的。 Callable描述的任务带返回值&#xff0c;Runnable描述的任务不带返回值 区别&#xff1a;线程封装了一个 “返回值”&#…

【项目精选】基于网络爬虫技术的网络新闻分析(视频+论文+源码)

点击下载源码 基于网络爬虫技术的网络新闻分析主要用于网络数据爬取。本系统结构如下&#xff1a; &#xff08;1&#xff09;网络爬虫模块。 &#xff08;2&#xff09;中文分词模块。 &#xff08;3&#xff09;中3文相似度判定模块。 &#xff08;4&#xff09;数据结构化存…

【Python - Matplotlib】P2 plot 折线图

Matplotlib绘制折线图折线图完整代码与效果基础折线图设定横纵坐标设置中文显示添加网格添加描述信息再添加一个城市设置两个折线图前言 上一节内容主要围绕介绍 Matplotlib 的画板结构。 链接&#xff1a;https://blog.csdn.net/weixin_43098506/article/details/129331576 本…

云HIS系统 云his系统源码 基于电子病历的医院信息平台标准建设

云HIS系统 云his系统源码 基于电子病历的医院信息平台标准进行建设 云HIS系统采用SaaS软件应用服务模式&#xff0c;提供软件应用服务多租户机制&#xff0c;实现一中心部署多机构使用。相对传统HIS单机构应用模式&#xff0c;它可灵活应对区域医疗、医疗集团、医联体、连锁诊…

GB28181国标平台LiveGBS视频统一汇聚后如何获取固定的播放地址,实现监控视频Web页面无插件播放、拉流分析、上大屏等目的...

目前汇聚各种厂家监控设备的视频汇聚平台&#xff0c;基本都是通过GB28181标准协议实现的。下面介绍下LiveGBS Web无插件直播的GB28181视频平台将各厂家(包括海康、大华、华为、宇视、天地伟业等)监控汇聚到同一个服务器上后&#xff0c;如何或者直播链接可以直播浏览器播放&am…

flstudio21水果language选项中文设置方法教程

编曲是通过DAW&#xff08;数字音频工作站软件&#xff09;完成的&#xff0c;也就是我们常说的宿主软件。现在有很多优秀的宿主软件&#xff0c;例如Cubase、Studio One、FL Studio等。 FL Studio是一款功能强大的音乐制作软件&#xff0c;也被称为FruityLoops。目前已经推出…

Android上传手机图片到服务器(这篇你要是看不懂,全网没你可以看懂的了!!!)

Android上传手机图片到服务器1、整体流程2、页面布局3、选择图片流程实现演示结果完整代码4、路径转换路径转换Utils工具类权限申请完整代码5、创建文件6、服务器端7、传输8、演示9、完整代码目录结构AndroidManifest.xml布局文件activity_main.xml传输文件工具类HttpUtil路径转…

蓝桥杯-质因数个数

蓝桥杯-质因数个数1、问题描述2、解题思路2.1 质数判断2.2 求取因子3、完整代码实现1、问题描述 给定正整数 n, 请问有多少个质数是 n 的约数。 输入格式 输入的第一行包含一个整数 n。 输出格式 输出一个整数, 表示 n 的质数约数个数。 样例输入 396样例输出 3样例说明 3…

【教学典型案例】13.学情页面逻辑问题

目录一&#xff1a;背景介绍二&#xff1a;LocalStorage缓存①localStorage是什么&#xff1f;②如何使用localStorage缓存三&#xff1a;学情页面逻辑分析过程四&#xff1a;总结五&#xff1a;升华一&#xff1a;背景介绍 使用的前端技术是Vue2&#xff0c;前端逻辑&#xf…

SpringCloud:Eureka

目录 一、eureka的作用 二、搭建Eureka服务端 三、添加客户端 四、服务发现 提供者与消费者 服务提供者&#xff1a;一次业务中&#xff0c;被其它微服务调用的服务。&#xff08;提供接口给其它微服务) 服务消费者&#xff1a;一次业务中&#xff0c;调用其它微服务的服…

[1.1_2]计算机系统概述——操作系统的四个特征

文章目录第一章 计算机系统概述操作系统的特征&#xff08;一&#xff09;并发&#xff08;二&#xff09;共享并发和共享的关系&#xff08;三&#xff09;虚拟&#xff08;四&#xff09;异步小结第一章 计算机系统概述 操作系统的特征 操作系统的四个特征 并发共享 并发和共…