从零到壹学习超级账本理论加实战第九讲:Fabric CA 应用与配置

黎跃春

孔壹学院、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

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180831G1X1M600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券