Hyperledger Fabric 生成组织身份解析

这篇具有很好参考价值的文章主要介绍了Hyperledger Fabric 生成组织身份解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

fabric 版本 2.4.1

Fabric 网络通过证书和密钥来管理和认证成员身份,经常需要生成证书文件。通常这些操作可以使用 PKI 服务(如 Fabric-CA)或者 OpenSSL 工具来实现(针对单个证书的签发)。为了方便批量管理组织证书,Fabric 基于 Go 语言的标准 crypto 库提供了 cryptogen(crypto generator)工具。cryptogen 可以根据指定配置批量生成所需要的密钥和证书文件,或查看配置模板信息。

cryptogen 工具

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>...]
    Show help.

  generate [<flags>]
    Generate key material

  showtemplate
    Show the default configuration template

  version
    Show version information

  extend [<flags>]
    Extend existing network
命令 参数 作用
generate --output (生成的身份信息文件存放目录,默认为 crypto-config) , --config (使用的 crypto-config.yaml 文件路径) N/A
showtemplate N/A 显示默认配置模板
extend --input (身份信息文件存放目录,默认为 crypto-config) , --config (使用的 crypto-config.yaml 文件路径) N/A
version N/A 查看版本信息

showtemplate 会展示一个 crypto-config.yaml 配置文件模板,一般情况下,配置文件中会指定网络的拓扑结构,还可以指定两类组织的信息:

● OrdererOrgs,构成 Orderer 集群的节点所属组织。

● PeerOrgs,构成 Peer 集群的节点所属组织。

使用下面命令将 howtemplate 命令输出的内容输出到一个文件中:

cryptogen howtemplate > crypto-config.yaml
# ---------------------------------------------------------------------------
# "OrdererOrgs" - Definition of organizations managing orderer nodes
# ---------------------------------------------------------------------------
OrdererOrgs:
  # ---------------------------------------------------------------------------
  # Orderer
  # ---------------------------------------------------------------------------
  - Name: Orderer
    Domain: example.com
    EnableNodeOUs: false

    # ---------------------------------------------------------------------------
    # "Specs" - See PeerOrgs below for complete description
    # ---------------------------------------------------------------------------
    Specs:
      - Hostname: orderer

# ---------------------------------------------------------------------------
# "PeerOrgs" - Definition of organizations managing peer nodes
# ---------------------------------------------------------------------------
PeerOrgs:
  # ---------------------------------------------------------------------------
  # Org1
  # ---------------------------------------------------------------------------
  - Name: Org1
    Domain: org1.example.com
    EnableNodeOUs: false

    # ---------------------------------------------------------------------------
    # "CA"
    # ---------------------------------------------------------------------------
    # Uncomment this section to enable the explicit definition of the CA for this
    # organization.  This entry is a Spec.  See "Specs" section below for details.
    # ---------------------------------------------------------------------------
    # CA:
    #    Hostname: ca # implicitly ca.org1.example.com
    #    Country: US
    #    Province: California
    #    Locality: San Francisco
    #    OrganizationalUnit: Hyperledger Fabric
    #    StreetAddress: address for org # default nil
    #    PostalCode: postalCode for org # default nil

    # ---------------------------------------------------------------------------
    # "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.
    #   - SANS:       (Optional) Specifies one or more Subject Alternative Names
    #                 to be set in the resulting x509. Accepts template
    #                 variables {{.Hostname}}, {{.Domain}}, {{.CommonName}}. IP
    #                 addresses provided here will be properly recognized. Other
    #                 values will be taken as DNS names.
    #                 NOTE: Two implicit entries are created for you:
    #                     - {{ .CommonName }}
    #                     - {{ .Hostname }}
    # ---------------------------------------------------------------------------
    # Specs:
    #   - Hostname: foo # implicitly "foo.org1.example.com"
    #     CommonName: foo27.org5.example.com # overrides Hostname-based FQDN set above
    #     SANS:
    #       - "bar.{{.Domain}}"
    #       - "altfoo.{{.Domain}}"
    #       - "{{.Hostname}}.org6.net"
    #       - 172.16.10.31
    #   - 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: 1
      # Start: 5
      # Hostname: {{.Prefix}}{{.Index}} # default
      # SANS:
      #   - "{{.Hostname}}.alt.{{.Domain}}"

    # ---------------------------------------------------------------------------
    # "Users"
    # ---------------------------------------------------------------------------
    # Count: The number of user accounts _in addition_ to Admin
    # ---------------------------------------------------------------------------
    Users:
      Count: 1

  # ---------------------------------------------------------------------------
  # Org2: See "Org1" for full specification
  # ---------------------------------------------------------------------------
  - Name: Org2
    Domain: org2.example.com
    EnableNodeOUs: false
    Template:
      Count: 1
    Users:
      Count: 1
配置项 作用 默认值
name 组织的名称 N/A
domain 组织的域名 N/A
EnableNodeOUs 是否启用 NodeOU,指定是否根据证书中的 OU 域来判断持有者角色 false
CA 组织的 CA 地址,包括 Hostname 域
Specs.Hostname 可以直接用 Hostname 多次指定若干节点 N/A
Specs.CommonName (可选配置) 指定 CN 的模板或显式覆盖。模板:"{{. hostname}}.{{.Domain}} N/A
Specs.SANS 这里可以配置节点支持的多个域名或者 IP N/A
Template 指定自动生成节点的个数 1
Users.Count 顺序生成指定个数的普通用户(除默认的 Admin 用户外) 1

SAN (Subject Alternative Name) 是 SSL 标准 x509 中定义的一个扩展。使用了 SAN 字段的 SSL 证书,可以扩展此证书支持的域名,使得一个证书可以支持多个不同域名的解析。SAN SSL 证书使您可以通过在注册时添加到 SAN 字段来确保域名和子域,本地主机名和 IP 地址的安全性,证书的安装过程和管理也更易于管理,也就是我们常说的多域名 SSL 证书。

生成网络身份信息文件:

cryptogen generate --config rypto-config.yaml --output crypto-config

crypto-config 目录结构:

crypto-config
├── 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
│       │   ├── orderer0.example.com
│       │   │   ├── msp
│       │   │   │   ├── admincerts
│       │   │   │   ├── cacerts
│       │   │   │   │   └── ca.example.com-cert.pem
│       │   │   │   ├── config.yaml
│       │   │   │   ├── keystore
│       │   │   │   │   └── priv_sk
│       │   │   │   ├── signcerts
│       │   │   │   │   └── orderer0.example.com-cert.pem
│       │   │   │   └── tlscacerts
│       │   │   │       └── tlsca.example.com-cert.pem
│       │   │   └── tls
│       │   │       ├── ca.crt
│       │   │       ├── server.crt
│       │   │       └── server.key
│       │   ├── orderer1.example.com
│       │   │   ├── msp
│       │   │   │   ├── admincerts
│       │   │   │   ├── cacerts
│       │   │   │   │   └── ca.example.com-cert.pem
│       │   │   │   ├── config.yaml
│       │   │   │   ├── keystore
│       │   │   │   │   └── priv_sk
│       │   │   │   ├── signcerts
│       │   │   │   │   └── orderer1.example.com-cert.pem
│       │   │   │   └── tlscacerts
│       │   │   │       └── tlsca.example.com-cert.pem
│       │   │   └── tls
│       │   │       ├── ca.crt
│       │   │       ├── server.crt
│       │   │       └── server.key
│       │   └── orderer2.example.com
│       │       ├── msp
│       │       │   ├── admincerts
│       │       │   ├── cacerts
│       │       │   │   └── ca.example.com-cert.pem
│       │       │   ├── config.yaml
│       │       │   ├── keystore
│       │       │   │   └── priv_sk
│       │       │   ├── signcerts
│       │       │   │   └── orderer2.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
    ├── org1.example.com
    │   ├── ca
    │   │   ├── ca.org1.example.com-cert.pem
    │   │   └── priv_sk
    │   ├── msp
    │   │   ├── admincerts
    │   │   ├── cacerts
    │   │   │   └── ca.org1.example.com-cert.pem
    │   │   ├── config.yaml
    │   │   └── tlscacerts
    │   │       └── tlsca.org1.example.com-cert.pem
    │   ├── peers
    │   │   ├── peer0.org1.example.com
    │   │   │   ├── msp
    │   │   │   │   ├── admincerts
    │   │   │   │   ├── cacerts
    │   │   │   │   │   └── ca.org1.example.com-cert.pem
    │   │   │   │   ├── config.yaml
    │   │   │   │   ├── keystore
    │   │   │   │   │   └── priv_sk
    │   │   │   │   ├── signcerts
    │   │   │   │   │   └── peer0.org1.example.com-cert.pem
    │   │   │   │   └── tlscacerts
    │   │   │   │       └── tlsca.org1.example.com-cert.pem
    │   │   │   └── tls
    │   │   │       ├── ca.crt
    │   │   │       ├── server.crt
    │   │   │       └── server.key
    │   │   └── peer1.org1.example.com
    │   │       ├── msp
    │   │       │   ├── admincerts
    │   │       │   ├── cacerts
    │   │       │   │   └── ca.org1.example.com-cert.pem
    │   │       │   ├── config.yaml
    │   │       │   ├── keystore
    │   │       │   │   └── priv_sk
    │   │       │   ├── signcerts
    │   │       │   │   └── peer1.org1.example.com-cert.pem
    │   │       │   └── tlscacerts
    │   │       │       └── tlsca.org1.example.com-cert.pem
    │   │       └── tls
    │   │           ├── ca.crt
    │   │           ├── server.crt
    │   │           └── server.key
    │   ├── tlsca
    │   │   ├── 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
        │   └── peer1.org2.example.com
        │       ├── msp
        │       │   ├── admincerts
        │       │   ├── cacerts
        │       │   │   └── ca.org2.example.com-cert.pem
        │       │   ├── config.yaml
        │       │   ├── keystore
        │       │   │   └── priv_sk
        │       │   ├── signcerts
        │       │   │   └── peer1.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

组织(例如:org1.example.com/) 相关身份文件目录 :

目录 存放文件说明
ca 存放组织的 CA 根证书和对应的私钥文件,默认采用 ECDSA 算法,证书为自签名。组织内的实体将该根证书作为证书根
msp 存放代表该组织的身份信息,有时还存放中间层证书和运维证书
msp/admincerts 组织管理员的身份验证证书,被根证书签名
msp/cacerts 组织信任的 CA 根证书,同 ca 目录下文件
msp/tlscacerts 用于 TLS 验证的信任的 CA 证书,自签名
msp/config.yaml 指定是否开启 OU(OrganizationalUnit),以及存放组织根证书路径和 OU 识别关键字
users/Admin 管理员用户的信息,包括其 MSP 证书和 TLS 证书
users/Admin/msp 存放代表身份的相关证书和私钥文件
users/Admin/tls 存放与 tls 相关的证书和私钥

其他用户身份文件目录和 Admin 类似。

组织节点(例如:org1.example.com/peers/peer0.org1.example.com/ ) 相关身份文件目录 :

目录 存放文件说明
msp 存放代表身份的相关证书和私钥文件
msp/admincerts 该 Peer 认可的管理员的身份证书。Peer 将基于这里的证书来认证交易签署者是否为管理员身份。这里默认存放有组织 Admin 用户的身份证书。
msp/cacerts 存放组织的 CA 根证书
msp/keystore 节点的身份私钥,用来签名
msp/signcerts 验证本节点签名的证书,被组织根证书签名
msp/tlscacerts TLS 连接用的 CA 证书,默认只有组织 TLSCA 证书
msp/ig.yaml 指定是否开启 OU,以及存放组织根证书路径和 OU 识别关键字
tls 存放与 tls 相关的证书和私钥
tls/ca.crt 组织的 TLS CA 证书
tls/server.crt 验证本节点签名的证书,被组织根证书签名
tls/server.key 本节点的 TLS 私钥,用来签名

yamlspecsopenssl

© 著作权归作者所有

举报

Hyperledger Fabric 生成组织身份解析,php,https,数据库文章来源地址https://www.toymoban.com/news/detail-816151.html

到了这里,关于Hyperledger Fabric 生成组织身份解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hyperledger Fabric配置文件解析-orderer.yaml

    orderer.yaml是orderer节点的配置文件,凡是orderer需要设置的内容,全在这里找。该orderer.yaml示例配置文件指定了如下五大部分内容。 General部分是orderer.yaml配置文件的基础配置信息部分,主要指定配置如下: LedgerType指定分类账本类型。 ListenAddress与ListenPort指定节点监听地址及端

    2024年01月25日
    浏览(28)
  • Hyperledger Fabric 配置文件解析——configtx.yaml

    提示:个人学习Hyperledger Fabric 的个人笔记,也是摸石头过河,借鉴前人的经验来提高自己。 借鉴: Hyperledger Fabric配置文件解析(二)——configtx.yaml_TLpigff的博客-CSDN博客_configtx.yaml 目录 一、configtx.yaml简介 二、configtx.yaml分析主要配置如下 2.1 Organizations部分 2.2 Capabilities 通道

    2024年02月09日
    浏览(28)
  • 万字解析——区块链hyperledger fabric2.2部署实战教程

    本教程在ubuntu20版本下运行,请在执行操作前先部署ubuntu20环境,所有部署都按照官方文档hyperledger fabric进行,在运行过程中遇到的问题,我也会逐个说明,如果你对于区块链还不太了解,请先查阅区块链概念,文中若有理解不对的地方,欢迎批评指正。 Hyperledger Fabric 是 Hy

    2024年02月03日
    浏览(41)
  • Linux搭建Hyperledger Fabric区块链框架 - Hyperledger Fabric模型概念

    2015年,Linux基金会启动了Hyperledger项目,目标是发展跨行业的区块链技术。 Hyperledger Fabric是Hyperledger中的一个区块链项目,包含一个账本,使用智能合约并且是一个通过所有参与者管理交易的系统。 Hyperledger Fabric 是分布式账本解决方案的平台,以模块化架构为基础,支持不同

    2023年04月08日
    浏览(49)
  • 【Fabric学习】什么是HyperLedger Fabric?

    本文总结自 Fabric官方文档 ,描述了Fabric产生的背景、特性、主要组件。 区块链 是不可更改的交易账本,由同等节点(peer nodes)组成的分布式网络来维护。 比特币:第一个使用区块链的应用; 以太坊:引入 智能合约 来开发分布式应用。 二者都是 公有链 ( public / permissi

    2024年01月19日
    浏览(49)
  • 【Hyperledger Fabric 学习】运行一个Fabric应用

    中文网址:https://hyperledger-fabric.readthedocs.io/zh_CN/latest 英文网址:https://hyperledger-fabric.readthedocs.io/en/latest 一般情况英文网址的内容更全面,版本也比中文新。 本教程介绍了 Fabric 应用程序如何与已部署的区块链网络进行交互。本教程使用使用 Fabric Gateway 客户端 API 构建的示例

    2023年04月08日
    浏览(70)
  • Hyperledger Fabric 架构概览

    fabric 版本 v2.4.1 超级账本 Fabric 自诞生以来已经发布了两个主要版本:1.0 系列版本(2017 年 7 月)和 2.0 系列版本(2020 年 1 月)。2016 年 9 月,Fabric 发布了 v0.6.0 预览版本,通过这一版本社区收集了大量来自实践的反馈和建议,主要集中在性能、安全、可扩展性等方面。2017

    2024年02月01日
    浏览(41)
  • Hyperledger Fabric 链码

    懂哪写哪,随时补充 链码在开发过程中需要实现链码接口,交易的类型决定了哪个接口函数将会被调用,链码的接口定义如下: 链码的必要结构如下: shim.ChaincodeStubInterface接口 1、Init方法 Init方法中,首先通过stub的GetFunctionAndParameters()方法提取本次调用的交易中所指定的

    2023年04月08日
    浏览(47)
  • Hyperledger Fabric问题汇总

    Ubuntu 20.04 Hyperledger Fabric 2.3.3 SDK对应的Go 1.17.5 链码对应的Go 1.18 Fabric-sdk-go 1.0.0 Docker 20.10.12 Docker-Compose 2.11.2 调用命令: peer chaincode invoke -o localhost:7050 – ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts

    2024年02月04日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包