Michael.W谈hyperledger Fabric第12期-Fabric账号详解

Michael.W谈hyperledger Fabric第12期-Fabric账号详解

1 Fabric的账号机制

Fabric中的账号是根据PKI规范生成的一组证书和秘钥文件。
从表象上看Fabric账号就是在利用指令生成的crypto-config目录下,某组织、节点或用户对应路径下的msp目录

	$ cryptogen generate --config=crypto-config.yaml

在这里插入图片描述
节点或用户的msp,其下面都是包含5个文件夹:
在这里插入图片描述

  • admincerts:管理员证书
  • cacerts:根CA服务器的证书
  • keystore:私钥
  • signcerts:符合x.509标准的节点或者用户证书文件。X509:通用的证书规则
  • tlscacerts:通信时进行数据加密的证书,即TLS根CA的证书

组织的msp下面包含3个文件夹:
在这里插入图片描述
在yaml文件中进行数据卷挂载的时候,我很少会单独地去挂载账户下的某一个文件。而是常常直接挂载整个msp目录,这样当系统具体需要哪个证书文件的时候就会直接去msp目录下找。
整个证书体系,由Fabirc框架来维护。在Fabric网络中,只要有数据通信,那么必定会被签名。这样任何一笔交易都无法抵赖。而普通的账号+密码组合是完全做不到这点的。

综上所述,Fabric账号的作用如下:

  • 保证记录在区块链中的数据具有不可逆、不可篡改
  • Fabric中每条交易都会加上发起者的标签(签名证书),同时用发起人的私钥进行加密
  • 如果交易需要其他组织的节点提供背书功能,那么背书节点也会在交易中加入自己的签名

2 隐藏的CA模块

为什么Fabric中可以同指令cryptogen能生成这么多用户证书呢?
这是因为在Fabric框架中有一个隐藏的CA模块,其作用是帮助创建账号

3 什么地方需要账号证书?

  1. 启动orderer节点的时候:
    在这里插入图片描述
    启动orderer的时候需要通过配置环境变量给当前启动的Orderer设定相应的账号。

  2. 启动peer节点的时候:
    在这里插入图片描述
    尽管没有配置环境变量,但是在数据卷挂载中挂载了peer节点的msp目录。

  3. 客户端在启动时不需要账号,但是在对某节点进行操作时需要用到账号。例如在初始化链码的时候:

    	# 设置环境变量,如果前面有设置过可以跳过
    	tlsfile=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/michael.com/orderers/orderer.michael.com/msp/tlscacerts/tlsca.michael.com-cert.pem
    	# 链码初始化,给michael账户和wang账户分别初始化为1000和2000元。
    	$ peer chaincode instantiate -o orderer.michael.com:7050 --tls --cafile $tlsfile -C michaelchannel -n michaelchaincode -v 1.0 -P "AND ('Org1MSP.member','Org2MSP.member')" -c '{"Args":["init","michael","1000","wang","2000"]}'
    

    在指令中需要指明orderer节点的msp目录。
    因为客户端去操作某个节点时,必须要校验身份。不是说谁都可以随意来操作的节点的。
    在这里插入图片描述
    当客户端连接到某peer节点时,就需要加载证书。

  4. 创建通道的时候:

    	# 设置环境变量,即orderer节点的tlsca证书地址
    	$ tlsfile=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/michael.com/orderers/orderer.michael.com/msp/tlscacerts/tlsca.michael.com-cert.pem
    	# 创建通道
    	$ peer channel create -o orderer.michael.com:7050 --tls true --cafile $tlsfile -c michaelchannel -f ./channel-artifacts/channel.tx
    

    客户端创建通道的时候需要证书,但是通道本身是没有证书的。因为通道只是一种隔离数据的方式。

Fabric的账号在编写yaml配置文件时,是一个必须要仔细检查的地方。配置文件时发生的错误,百分之九十都是出在账户证书上!

ps:
本人热爱图灵,热爱中本聪,热爱V神,热爱一切被梨花照过的姑娘。
以下是我个人的公众号,如果有技术问题可以关注我的公众号来跟我交流。
同时我也会在这个公众号上每周更新我的原创文章,喜欢的小伙伴或者老伙计可以支持一下!
如果需要转发,麻烦注明作者。十分感谢!
后现代泼痞浪漫主义奠基人
公众号名称:后现代泼痞浪漫主义奠基人

发布了49 篇原创文章 · 获赞 23 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/michael_wgy_/article/details/88430011