最近在看CA的内容,这个文章感觉不错,转过来。
本篇主要介绍Fabric-CA
模块的搭建与使用,本篇使用的版本是Fabric-CA1.0.6
版本,由于官方的项目还处在不断的快速迭代当中所以建议在配置和使用时还是按照指定的版本来使用,以免遇见不必要的问题
一、Fabric-CA模块基本作用与功能构架
二、基本环境的准备与部署
2.1、安装依赖包以及MySQL数据库
通过官网的介绍我们可以知道,默认情况下Fabric-CA
模块启动时默认使用sqllite
作为存储元数据的数据库,但是在实际的生产过程中,我们不会使用sqllite
作为生产环境的库进行使用的,一般情况下会配置为MySQL
或者PG
,此处本文以MySQL
为例进行配置,笔者在官方的Github
中为找到官方编译好的二进制包,所以在部署前,我们需要需要自行编译fabric-ca
的二进制包,此处需要一点点Go
语言的基础支持,了解什么是GOPATH
等,关于GO
的编译环境大家可以搜索其他资料,此处不在赘述。
Shell> yum install libtool libtool-ltdl-devel #安装编译时依赖包 Shell> cd ${GOPATH}/src Shell> mkdir -p github.com/hyperledger #创建编译源码的目录位置,网上很多的资料或者官方都会指导使用go get -u 的方式,但是此处我们只需要使用fabric-ca 1.0.6的版本,所以此处我们只能先clone一下源码然后使用git checkout我们想要的版本 Shell> cd github.com/hyperledger Shell> git clone https://github.com/hyperledger/fabric-ca.git Shell> git checkout v1.0.6 #检出我们想要的版本,此处的方式不是很优雅,应该加上-b参数新建一个分支去做,但是我们又不修改源码所以不优雅就不优雅了 Shell> cd fabric-ca/cmd/fabric-ca-server Shell> go install #编译安装fabric-ca-server,编译完成后可运行的二进制文件在$GOPATH/bin目录下 Shell> cd ../fabric-ca-server Shell> go install #编译fabric-ca-client
三、Fabric-CA的部署
四、Fabric-CA模块的基本操作
4.1、使用Fabric-Client操作CA模块
涉及到Fabric-CA
的主要操作主要包含
-
enroll:
登陆获取ECert
即用户身份证书 -
getcacert:
获取证书链 -
reenroll:
再次登陆 -
register:
注册用户实体,该功能比较常用,因为在注册用户以及peer节点时比较有用 -
revoke:
吊销发放的实体证书
上述命令都可以调用RESTful
接口实现的,但是为了熟悉CA
模块我们可以先使用官方的client
熟悉一下操作
- 登陆一个用户
该操作就是登陆在CA
模块中注册的用户获取到MSP身份文件,有了该文件就可以连接到组织中进行操作了,当然对于刚刚初始化的超级账本只有管理员身份
Shell> export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin #配置client读取与存储身份文件的位置 Shell> fabric-ca-client enroll -u http://epoint:*******@localhost:7054 #登陆管理员身份
登陆成功后会发现在配置文件位置会有一个MSP
文件夹,该文件夹中就是存放着登陆身份对应的身份管理信息
- 注册一个普通用户
Shell> fabric-ca-client register --id.name city1user1 --id.type user --id.affiliation city1.peer0 --id.attrs 'hf.Revoker=true,foo=bar' -u http://epoint:epoint@localhost:7054 --id.secret epoint Shell> fabric-ca-client register --id.name city2user1 --id.type user --id.affiliation city2.peer0 --id.attrs 'hf.Revoker=true,foo=bar' -u http://epoint:epoint@localhost:7054 --id.secret epoint
- 注册一个peer节点证书
Shell> fabric-ca-client register --id.name city1peer0 --id.type peer --id.affiliation city1.peer0 --id.secret city1peer0 Shell> fabric-ca-client register --id.name city2peer0 --id.type peer --id.affiliation city2.peer0 --id.secret city2peer0