黎跃春
孔壹学院、ChainDesk创始人兼CEO
如果您有任何关于区块链的问题,可以加入区块链技术交流QQ群729666975(进群无需添加验证信息,直接点击下一步,等待管理员通过即可),我们会为您一一解答。
从零到壹学习超级账本理论加实战为一个系列,一共23讲,包括超级账本简介、搭建环境、启动网络、测试链码、区块链应用开发等。今天我们将为大家介绍从零到壹学习超级账本理论加实战第九讲:Fabric CA 应用与配置。话不多说,马上开启我们的超级账本理论加实战学习之旅。
课程学习,添加莉莉微信(kongyixueyuan)获取。
孔壹学院
#Fabric CA 应用与配置
##简介
Fabric CA项目是超级账本Fabric内的MemberService组件, 对网络内各个实体的身份证书的管理, 主要实现:
负责Fabric网络内所有实体(Identity)的身份管理, 包括身份的注册、注销等
负责证书管理, 包括ECerts(身份证书)、TCerts(交易证书)等的发放和注销
服务端支持基于客户端命令行的RESTful API的交互方式
Fabric CA采用Go语言进行编写
##基本组件
Fabric CA采用了典型的C/S架构, 目前包含两个基本组件, 分别实现服务端功能和客户端功能
服务端: fabric-ca-server实现核心的PKI(Public Key Infrastructure: 公钥基础设施)服务功能, 支持多种数据库后台(包括SQlite3、MySQL、PostgreSQL等), 并支持集成LDAP用为用户注册管理功能
客户端: fabric-ca-client封装了服务端的RESTful API, 提供访问服务端的命令, 供用户与服务端进行交互
RESTful: 不是什么新技术, 只是一种风格
##安装服务端与客户端
安装Go1.10+
设置GOPATH环境变量
###安装libtool 与 libltdl-dev 依赖包
###安装
安装服务端与客户端二进制命令到$GOPATH/bin目录下
切换至源码目录下:
使用make命令编译:
生成 目录, 目录中包含 与 两个可执行文件
设置环境变量
###初始化
返回至用户目录
fabric-ca启动:
初始化
生成配置文件到至当前目录
fabric-ca-server-config.yaml: 默认配置文件
ca-cert.pem: PEM格式的CA证书文件, 自签名
fabric-ca-server.db: 存放数据的sqlite数据库
msp/keystore/: 路径下存放个人身份的私钥文件(_sk文件), 对应签名证书
###快速启动
快速启动并初始化一个fabric-ca-server服务
-b: 提供注册用户的名称与密码, 如果没有使用LDAP, 这个选项为必需. 默认的配置文件的名称为fabric-ca-server-config.yaml
如果之前没有执行初始化命令, 则启动过程中会自动先进行初始化操作. 即从主配置目录搜索相关证书和配置文件, 如果不存在则会自动生成
RESTful API
在打开的新终端中输入以下命令获取指定CA服务的基本信息.
如要获取默认CA服务的基本信息, 可以不带任何参数, 如:
参数说明:
-X: 指定提交请求时的请求方式
-d: 指定提交请求时的参数
##服务端命令剖析
fabric-ca-server命令主要负责启动一个CA服务, 包括init和start两个子命令
###服务端配置文件解析
fabric-ca-server-config.yaml配置文件包括通用配置, TLS配置, CA配置, 注册管理配置, 数据库配置, LDAP配置, 组织结构配置, 签名, 证书申请等几部分
###与服务器端进行交互
可以采用包括RESTful API在内的多种方式与Fabric-CA服务端进行交互. 其中最方便的方式是通过客户端工具 fabric-ca-client
####登记用户
注册管理员需要以管理员身份使用CA Client连接到CA Server,并生成相应的文件
如果生成的配置文件不是在当前目录下, 则运行登记命令后可能会产生如下错误
-u: 进行连接的fabric-ca-server服务地址, 默认为"http://localhost:7054"
该命令访问本地Fabric CA服务, 采用默认的admin用户进行登记. 默认情况下会在用户目录下的.fabric-ca-clien子目录下创建默认的配置文件 和 子目录(包括签发的证书文件)
可以使用 命令查看结构
####注册用户
登记后的用户身份可以采用如下命令来注册一个新的用户:
执行后输出:
命令执行成功后返回该新注册用户的密码
如果想使用指定的密码, 在命令中添加选项 --id.secret password 即可
可以再次使用enroll命令,给kevin这个用户生成msp的私钥和证书
-M: 指定生成证书存放目录MSP的路径, 默认为"msp"
命令执行成功后会在 目录下生成指定的userca目录, 在此目录下生成msp的私钥和证书
可使用tree使用查看
输出内容如下:
####登记节点
登记Peer或Orderer节点的操作与登记用户身份类似. 可以通过-M指定本地MSP的根路径来在其下存放证书文件
#####注册节点:
#####登记节点
##客户端命令剖析
fabric-ca-client命令可以与服务端进行交互, 包括五个子命令:
register: 注册用户实体
enroll: 登录获取ECert
getcacert: 获取CA服务的证书链
reenroll: 再次登录
revoke: 吊销签发的实体证书
这些命令都是通过服务端的RESTful接口来进行操作的
###enroll命令
向服务端申请签发ECert证书并将文件保存至本地
###getcacert命令
向服务端申请根证书信息并保存至本地主配置目录的msp/cacerts路径下
证书命名格式为: 服务器主机名-CA实例名.pem
###reenroll命令
利用本地配置信息再次执行enroll过程, 生成新的签名证书材料
###register命令
执行注册新用户实体的客户端必须已经通过登记认证, 并且拥有足够的权限(所注册用户的hf.Registrar.Roles和affiliation都不能超出调用者属性)来进行注册
###revoke命令
吊销指定的证书或指定实体相关的所有证书. 执行revoke命令的客户端身份必须拥有足够的权限(hf.Revoker为true, 并且被吊销者机构不能超出吊销者机构的范围)
-e: 指定吊销用户
-r: 指定吊销原因
输出内容如下
##查看AKI和序列号
AKI: 公钥标识号, 代表了对该证书进行签发机构的身份
查看根证书的AKI与序列号信息:
输出内容如下:
###单独获取AKI
输出内容如下:
###单独获取序列号
输出内容如下:
系列阅读
yuedu
领取专属 10元无门槛券
私享最新 技术干货