深度学习
在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(加群验证:我是码农)
全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试
var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!
评论专区