当前位置:首页 » 区块链精品文章 » 正文

10.4 cryptogen生成组织身份配置

2484 人参与  2018年09月29日 15:17  分类 : 区块链精品文章  评论

在Fabric网络中,需要通过证书和密钥来管理和鉴别成员身份,经常需要进行证书生成和配置操作。通常这些操作可以使用PKI服务或者OpenSSL工具来手动实现单个证书的签发。

为了提高对负责组织结构和批量证书进行管理的效率,基于Go语言的crypto库,Fabric提供了cryptogen(Crypto Generator)工具。

cryptogen可以快速地根据配置自动批量生成所需要的密钥和证书文件,或者查看配置模板信息,主要实现代码在common/tools/cryptogen包下。

10.4.1 配置文件

cryptogen工具支持从配置文件(通过-config参数指定,通常命名为crypto-config.yaml)

中读入YAML格式的配置模板信息。

一般情况下,配置文件中会指定网络的拓扑结构,可以指定两类组织的信息:

·OrdererOrgs:构成Orderer集群的节点所属组织;

·PeerOrgs:构成Peer集群的节点所属组织。

每个组织拥有:

·名称(Name):组织的名称;

·组织域(Domain):组织的命名域;

·CA:组织的CA地址,包括Hostname域;

·若干节点(Node):一个节点包括Hostname、CommonName、SANS等域,可以用Specs字段指定一组节点,或者用Template字段指定自动生成节点的个数;

·用户(User)模板:自动生成除admin外的用户个数。

每个主机的配置一般可以通过Specs来指定或通过Template来自动顺序生成,默认通用名为主机名.组织域。例如 域org1.example.com中Peer节点的名称可能为peer0.org1.example.com、 peer1.org1.example.com等。

crypto-config.yaml配置文件的示例如下:


OrdererOrgs:
   - Name: Orderer
       Domain: example.com
       Specs:
           - Hostname: orderer
             CommonName: orderer.example.com
             SANS: # 除了主机名、通用名外的主题别名
                  - "orderer.{{.Domain}}"
                  - "orderer_service.{{.Domain}}"
PeerOrgs:
   - Name: Org1
       Domain: org1.example.com
       CA:
           Hostname: ca # ca.org1.example.com
       Template:
           Count: 2
       Users:
           Count: 1
   - Name: Org2
       Domain: org2.example.com
       Template:
           Count: 2
       Users:
           Count: 1


上面的示例配置中,Orderer组织通过Specs字段指定了一个主机order.example.com;而两个Peer组织则采用Template来自动生成了Count个数的主机。

同样,Users字段下的Count字段值会让cryptogen工具以自动顺序生成指定个数的普通用户(除默认的Admin用户外)。

10.4.2 子命令和参数

子命令主要有两个:

·generate[flags]:生成密钥和证书文件;

·showtemplate:查看配置模板的信息。

其中,generate子命令支持如下参数:

·--output:指定存放生成密钥和证书文件的路径,默认为当前目录下的crypto-config目录;

·--config:指定所采用的配置模板文件的路径。

10.4.3 生成密钥和证书文件

根据指定的配置文件来生成相应的密钥和证书文件:


$ cryptogen generate \
   --config $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli/crypto-
       config.yaml \
   --output crypto-config


查看当前目录下的crypto-config目录,生成ordererOrganizations和peerOrganizations两棵组织树。每个组织树下都包括ca、msp、orderers(或peers)、users四个子目录。

以peerOrganizations组织树为例,每个目录和文件对应的功能讲解如下。

1.org1

第一个组织的相关材料,每个组织会生成单独的根证书。

·ca:存放组织的根证书和对应的私钥文件,默认采用EC算法,证书为自签名。组织内的实体将基于该根证书作为证书根。

·msp:存放代表该组织的身份信息。

·admincerts:组织管理员的身份验证证书,被根证书签名。

·cacerts:组织的根证书,同ca目录下文件。

·tlscacerts:用于TLS的CA证书,自签名。

·peers:存放属于该组织的所有Peer节点。

·peer0:第一个peer的信息,包括其msp证书和tls证书两类。

·msp:

·admincerts:组织管理员的身份验证证书。Peer将基于这些证书来认证交易签署者是否为管理员身份。

·cacerts:存放组织的根证书。

·keystore:本节点的身份私钥,用来签名。

·signcerts:验证本节点签名的证书,被组织根证书签名。

·tlscacerts:TLS连接用的身份证书,即组织TLS证书。

·tls:存放tls相关的证书和私钥

·ca.crt:组织的根证书。

·server.crt:验证本节点签名的证书,被组织根证书签名。

·server.key:本节点的身份私钥,用来签名。

·peer1:第二个peer的信息,结构类似。(此处省略。)

·users:存放属于该组织的用户的实体。

·Admin:管理员用户的信息,包括其msp证书和tls证书两类。

·msp:

·admincerts:组织根证书作为管理者身份验证证书。

·cacerts:存放组织的根证书。

·keystore:本用户的身份私钥,用来签名。

·signcerts:管理员用户的身份验证证书,被组织根证书签名。要被某个Peer认可,则必须放到该Peer的msp/admincerts下。

·tlscacerts:TLS连接用的身份证书,即组织TLS证书。

·tls:存放tls相关的证书和私钥。

·ca.crt:组织的根证书。

·server.crt:管理员的用户身份验证证书,被组织根证书签名。

·server.key:管理员用户的身份私钥,用来签名。

·User1:第一个用户的信息,包括msp证书和tls证书两类。

·msp:

·admincerts:组织根证书作为管理者身份验证证书。

·cacerts:存放组织的根证书。

·keystore:本用户的身份私钥,用来签名。

·signcerts:验证本用户签名的身份证书,被组织根证书签名。

·tlscacerts:TLS连接用的身份证书,即组织TLS证书。

·tls:存放tls相关的证书和私钥。

·ca.crt:组织的根证书。

·server.crt:验证用户签名的身份证书,被组织根证书签名。

·server.key:用户的身份私钥,用来签名。

·User2:第二个用户的信息,结构类似。(此处省略。)

2.org2

第二个组织的信息,结构类似。

cryptogen按照配置文件中指定的结构生成了对应的组织和密钥、证书文件。

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

·admincerts:管理员的身份证书文件;

·cacerts:信任的根证书文件;

·keystore:节点的签名私钥文件;

·signcerts:节点的签名身份证书文件;

·tlscacerts:TLS连接用的证书;

·intermediatecerts(可选):信任的中间证书;

·crls(可选):证书撤销列表;

·config.yaml(可选):记录OrganizationalUnitIdentifiers信息,包括根证书位置和ID信息。

这些身份文件随后可以分发到对应的Orderer节点和Peer节点上,并放到对应的MSP路径下,用于签名使用。

10.4.4 查看配置模板信息

通过showtemplate命令可以查看cryptogen内嵌默认的配置模板信息。

例如,通过如下命令查看默认配置,包括三个组织,一个Orderer组织以及两个Peer组织:Org1、Org2:


$ cryptogen showtemplate

OrdererOrgs:
   - Name: Orderer
       Domain: example.com
       Specs:
           - Hostname: orderer
PeerOrgs:
   - Name: Org1
       Domain: org1.example.com
       Template:
           Count: 1
       Users:
           Count: 1
   - Name: Org2
       Domain: org2.example.com
       Template:
           Count: 1
       Users:
           Count: 1



来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=919

区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>

网站分类

标签列表

最近发表

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

本站资源大部分来自互联网,版权归原作者所有!