# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
# ---------------------------------------------------------------------------
# "PeerOrgs" - Definition of organizations managing peer nodes
# ---------------------------------------------------------------------------
PeerOrgs:
# ---------------------------------------------------------------------------
# Org1
# ---------------------------------------------------------------------------
- Name: Org1
Domain: org1.example.com
EnableNodeOUs: 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.
# ---------------------------------------------------------------------------
# - 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: 1
SANS:
- localhost
# Start: 5
# Hostname: {{.Prefix}}{{.Index}} # default
# ---------------------------------------------------------------------------
# "Users"
# ---------------------------------------------------------------------------
# Count: The number of user accounts _in addition_ to Admin
# ---------------------------------------------------------------------------
Users:
Count: 1
cryptogen generate
命令会读取crypto-config-org1.yaml
文件来生成组织的加密材料和证书。
该文件主要定义了PeerOrgs,即管理对等节点的组织。在该配置文件中,Org1是一个PeerOrg,并定义了以下属性:
在Hyperledger Fabric网络中,域名用于标识和区分不同的组织。每个组织都应该拥有一个唯一的域名。在配置文件中,每个组织都有一个名为Domain的属性,它指定了组织的域名。当Fabric网络中的参与方需要与其他参与方通信时,域名将用于识别要与之通信的参与方。此外,Fabric中的证书和标识都使用域名作为一部分其命名约定,因此使用唯一的域名可以确保证书和标识的唯一性。
EnableNodeOUs是指定组织是否启用节点的组织单位(Organizational Units,OUs),节点OU是指定PEER节点的身份的单位,可用于控制对等节点的访问权限和授权策略。在Hyperledger Fabric网络中,节点可以属于不同的OU,可以通过配置OU标识和其对应的访问策略来精细控制节点之间的通信和数据访问。启用OU可以使组织更细粒度地管理节点,并更好地满足其安全和管理需求。
在PeerOrgs下面,Template
指定了如何创建节点。在此示例中,节点使用默认主机名“peer%d”,其中%d将按顺序递增。
SANS代表"Subject Alternative Names",即主题备用名称。在生成证书时,通常可以指定多个主题备用名称,这些名称可以与证书中的主题名称一起使用,以增加证书的灵活性。在这里,SANS是在Org1中定义的,其值是一个字符串数组,其中只包含一个值"localhost"。这意味着在生成证书时,证书的主题备用名称将是"localhost",这使得可以在同一机器上运行不同的Fabric CA服务器而不会出现证书冲突的问题。(如果同时启动了peer0和peer1,并且它们的主机名都是localhost,都属于org1,域名都是org1.example.com,那么连接localhost.org1.example.com时,具体连接的是哪个节点是不确定的,取决于网络中的路由和负载均衡策略。因此,在多个节点都使用localhost主机名时,最好使用不同的端口或不同的IP地址来区分它们。)
此外,在Users下,Count
指定了除Admin用户之外的其他用户数。在Hyperledger Fabric网络中,每个Peer节点都有一个管理员用户(Admin),可以使用该用户进行管理和操作。除了管理员用户,还可以为组织中的Peer节点创建其他用户账户。Count选项用于指定在生成证书时,为Peer节点创建的用户账户数量,除了管理员账户外的其他账户数量。例如,在上面提到的配置文件中,Count指定为1,则在生成证书时,除了Admin账户外,将创建1个其他用户账户。这些用户账户可以用于Peer节点之间的身份验证和授权。
使用此配置文件,cryptogen generate
命令将生成组织的私钥、证书和其他加密材料,并将它们输出到指定的目录中。输出目录默认为./crypto-config
,在这个例子中,我们已经将输出目录更改为./organizations
。生成的证书和密钥将用于启动Fabric网络中的各种组件,如Peer节点和Orderer节点等。