Fabric CA的部署与使用
Fabric CA是Hyperledger Fbric的证书认证中心,提供以下功能:用户信息的登记与注册,数字证书的颁发与管理。
前言
之前使用CA服务一直是在
docker
容器中运行下载好的CA镜像,在应用程序中通过Node SDK中集成的接口来访问CA服务器,这次尝试手动部署CA服务;Fabric CA由服务端和客户端组件组成,CA服务端(
fabric-ca-server
)可以看作一个web服务,执行了Go代码编译生成的二进制文件后,会监听一个端口,处理收到的请求;CA客户端(
fabric-ca-client
)其实就是一个向CA服务端发送请求的程序,执行编译成的二进制文件并带上不同参数,可以向CA服务器发送相应的http请求,完成一系列操作。
准备工作
安装Go语言并配置好
GOPATH
环境变量,下载并配置docker
,具体参考环境配置安装
libtool
和libtdhl-dev
sudo apt install libtool libltdl-dev
通过命令行安装和启动CA
直接从github下载并编译
go get -u github.com/hyperledger/fabric-ca/cmd/fabric-ca-server
go get -u github.com/hyperledger/fabric-ca/cmd/fabric-ca-clientgo get
命令会自动获取源码并编译至$GOPATH/bin
,我的目录是~/go/bin
,目录下出现编译好的二进制可执行文件fabric-ca-server
和fabric-ca-client
接着初始化和启动
fabric-ca-server
,需要设置一个管理员用户的名称和密码fabric-ca-server init -b admin:adminpw
fabric-ca-server start -b admin:adminpw在这里报错了
panic: Version is not set for fabric-ca library
,可能与下载的v1.1版本的fabric-ca
有关系。手动编译生成
既然直接从github下载的版本出现错误,可以选择自己去编译生成指定版本的fabric-ca-server
。
首先下载fabric-ca
源码并切换至相应版本:git clone https://github.com/hyperledger/fabric-ca.git
git checkout v1.1.0然后在
fabric-ca
目录下进行编译make fabric-ca-server
make fabric-ca-client会在
.../fabric-ca/bin
目录下生成fabric-ca-server
和fabric-ca-client
。接着进入bin
目录对CA服务端进行初始化:fabric-ca-server init -b admin:adminpw
初始化后在目录下生成
msp
:包含keystore,CA服务器的私钥ca-cert.pem
:CA服务端的证书fabric-ca-server.db
:CA默认使用的嵌入型数据库 SQLitefabric-ca-server-config.yaml
:CA服务端的配置文件
接着启动CA服务器
fabric-ca-server start -b admin:adminpw
CA server开始监听,默认监听地址为
http://0.0.0.0:7054
。如果直接执行start
命令则会自动先进行初始化init
然后启动服务开始监听。
通过docker镜像安装和启动CA
docker
镜像中同时包含了fabric-ca-server
和fabric-ca-client
直接下载fabric-ca镜像
首先可以选择从Docker Hub
直接下载fabric-ca
镜像:docker pull hyperledger/fabric-ca:x86_64-1.1.0
利用
docker-compose.yml
文件来启动镜像,配置文件在.../fabric-ca/docker/server
中,进入该目录后启动:docker-compose up
即可启动ca容器,如果镜像不存在还会主动拉取镜像,在
.../server/fabric-ca-server
目录中会生成上述的配置文件(这是利用docker-compose.yml
文件设置的映射),证书私钥,数据库文件等,并且开始监听一个端口。手动编译docker镜像
除了直接从Docker Hub
拉取fabric-ca
镜像,还可以通过源码编译生成镜像。
在fabric-ca
目录下执行:make docker
会生成四个镜像
fabric-ca
,fabric-ca-tool
,fabric-ca-peer
,fabric-ca-orderer
,镜像保存在.../fabric-ca/build/image
中,之后和上面的方法相同根据docker-compose.yml
文件启动ca节点。
Fabric CA的使用
访问Fabric CA服务端的方法有两种:通过客户端工具(fabric-ca-client
)和RESTful
接口。本质上,客户端工具也是调用服务端的RESTful
接口实现的。这里采用客户端工具的方法来进行访问。
首先按照上述步骤初始化和启动CA服务器(执行fabric-ca-server
或启动CA容器),如果已经下载fabric-ca-client
,那移动到相应目录下即可开始操作(若已添加至环境变量则不用)。如果是以docker
容器方式运行CA服务器且未下载客户端工具,可以进入容器内部进行测试(ca镜像集成了服务端和客户端组件),二进制文件放在/usr/local/bin
且已经添加环境变量,进入方法为:
docker exec -it fabric-ca-server bash
这里选择运行编译好的可执行文件的方法,首先在一个终端下启动CA服务器:
fabric-ca-server start -b admin:adminpw
在另一个终端操作CA客户端。首先需要注册(enroll)启动时设置的管理员用户, 注册前需要设置证书存储目录的环境变量:
export FABRIC_CA_CLIENT_HOME=$HOME/ca
fabric-ca-client enroll -u http://admin:adminpw@localhost:7054
可以发现~/ca
目录下生成了一个fabric-ca-client-config.yaml
配置文件,以及msp
目录,包含管理员的证书和私钥。有了已经enroll成功的admin用户,接下来将admin作为登记员(Registrar)来登记(register)一个新用户:
fabric-ca-client register --id.name Jim --id.type user --id.affiliation org1.department1 --id.attrs 'hf.Revoker=true,foo=bar'
客户端可以接收到一个密码,用这个注册密码来注册(enroll)用户:
fabric-ca-client enroll -u http://Jim:IGIMqptUPBRc@localhost:7054 -M $FABRIC_CA_CLIENT_HOME/Jim
这样一个新用户就注册成功了,获取了属于自己的证书和私钥。
总结
总结一下,手动部署CA服务可以分为两类方法:
一种方法是在命令行直接运行编译过后的可执行文件,可以通过
go get
命令自动获取并编译(最新版本有报错),也可以手动获取源码,切换版本后再进行编译; 然后在命令行中初始化和启动CA服务器;另一种方法是在容器中运行
docker
镜像,镜像中包含编译好的可执行文件,镜像可以从Docker Hub
直接下载,也可以在fabric-ca
目录下利用make docker
手动编译,然后利用docker-compose
启动CA容器。
Fabric CA的部署与使用的更多相关文章
- Fabric CA环境的集成
我们前面关于Fabric的所有文章中用到的例子都没有CA Server,都是由cryptogen这个工具根据crypto-config.yaml而生成的.但是在实际生产环境中,我们肯定不能这么做,我们 ...
- (转)Fabric CA环境的集成
PS:因为我部署的是集群(4peer+1order),需要为order,org1,org2分别建立一个CA,拿org1使用举例,获取org1根证书私钥名称:PRIVATE_KEY.sh #!/bin/ ...
- Fabric CA/数字证书管理
MSP(Membership Service Provider)成员管理服务提供商 名词: 1.CSR(Cerificate Signing Request):证书签署请求文件 CSR里包含申请者的 ...
- 使用Fabric一键批量部署上线/线上环境监控
本文讲述如何使用fabric进行批量部署上线的功能 这个功能对于小应用,可以避免开发部署上线的平台,或者使用linux expect开发不优雅的代码. 前提条件: 1.运行fabric脚本的机器和其他 ...
- Python Fabric远程自动部署简介
Fabric是一个Python(2.5-2.7)库,用于简化使用SSH的应用程序部署或系统管理任务. 它提供的操作包括:执行本地或远程shell命令,上传/下载文件,以及其他辅助功能,如提示用户输入. ...
- Hyperledger Fabric CA的命令行用法
介绍Hyperledger Fabric CA的命令行方式简单用法 Hyperledger Fabric CA由server和client两部分组成. 设置两个环境变量 export FABRIC_C ...
- Hyperledger Fabric CA User’s Guide——配置设置(四)
配置设置 Fabric CA提供了三种方案去配置Fabric CA服务端和客户端,优先顺序是: CLI flags(标识) 环境变量 配置文件 在本文档的其余部分中,我们将对配置文件进行更改.但是,可 ...
- Hyperledger Fabric CA User’s Guide——开始(三)
Fabric CA User’s Guide——开始 先决条件 安装Go 1.9+ 设置正确的GOPATH环境变量 安装了libtool和libtdhl-dev包 下面是在Ubuntu上安装libto ...
- Hyperledger Fabric CA User’s Guide——概述(二)
概述 下面的图表说明了如何将Hyperledger Fabric CA与总体的Hyperledger Fabric结构相匹配. 有两种方式与一种Hyperledger Fabric CA服务器进行交互 ...
随机推荐
- (转)对 Linux 专家非常有用的 20 个命令
谢谢你你给了我们在这篇文章前两个部分的喜欢,美言和支持.在第一部分文章中我们讨论了那些都只是切换到 Linux 和linux新手所需的必要知识的用户的命令. 对 Linux 新手非常有用的 20 个命 ...
- 【集群实战】Rsync试题-异机数据备份解决方案
企业案例:Rsync上机实战考试题: 某公司有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其它机器上做一个周期性定时备份. 要求如下: 每天晚上00点整在 ...
- 【集群实战】Rsync数据同步工具
1. Rsync介绍 1.1 什么是Rsync? Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windows ...
- CSS开发技巧(三):图片点击缩放
前言 利用CSS实现图片的点击缩放是一个很值得研究的效果.在某些业务需求场景中,我们可能并没有足够的空间展示过大的图片,这就需要限制图片容器的宽度和高度.然而图片限制了宽度,一些图片的细节便又无法看 ...
- INTERVIEW #4
120min, 5题.本菜鸡怒跪. 1.变身程序员 (读取时可以按行读取,直到读到空行为止,再对读取过的所有行做转换处理) 输出描述:如果能将所有的产品经理变成程序员,输出最小的分钟数:如果不能将所有 ...
- 数学--数论--Hdu 5793 A Boring Question (打表+逆元)
There are an equation. ∑0≤k1,k2,⋯km≤n∏1⩽j<m(kj+1kj)%1000000007=? We define that (kj+1kj)=kj+1!kj! ...
- postman(参数化)
一.参数化 1.新建csv文件 2.csv文件中输入变量名和参数 3.postman中新增接口,并设置变量 4.选择进入runner页面 方法一 方法二 5.导入参数化csv格式文件,点击run It ...
- 设置 Linux 支持中文
1.首先在 command 输入 locale,可以看到 Linux 下默认的系统语言的是英文 2.vim ~/.bashrc 打开这个文件,该文件夹相当于系统配置文件 3.打开后,将后三行命令输入到 ...
- C. The Big Race
\(给出数n,a,b\) \(在[1,n]区间内随机选数,选出的数被a,b除后同余的概率\) \(这题的精度问题真的是烦炸了~\) \(设最小公倍数lcm=a*b/gcd(a,b)\) \(所以在区间 ...
- uniapp滚动监听元素
鸽了这么久,一晃2个月过去了.自考+上班没时间记录. 前不久看到移动官网上的时间轴效果,看起来不错,我也来试着做一下. 需要元素滚动到视野内加载动画. 插件地址 https://ext.dcloud. ...