Fabric CA的部署与使用

Fabric CAHyperledger 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,具体参考环境配置

  • 安装libtoollibtdhl-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-client

    go get命令会自动获取源码并编译至$GOPATH/bin,我的目录是~/go/bin,目录下出现编译好的二进制可执行文件fabric-ca-serverfabric-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-serverfabric-ca-client。接着进入bin目录对CA服务端进行初始化:

    fabric-ca-server init -b admin:adminpw                 

    初始化后在目录下生成

    • msp :包含keystore,CA服务器的私钥
    • ca-cert.pem :CA服务端的证书
    • fabric-ca-server.db :CA默认使用的嵌入型数据库 SQLite
    • fabric-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-serverfabric-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-cafabric-ca-toolfabric-ca-peerfabric-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容器。

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
您好!感谢您的提问。要部署Fabric CA,您可以按照以下步骤进行操作: 1. 安装Fabric CA服务器:首先,您需要在服务器上安装Fabric CA二进制文件。您可以从Hyperledger Fabric的官方网站下载适用于您的操作系统的二进制文件,并将其解压缩到所需的位置。 2. 配置Fabric CA服务器:接下来,您需要创建一个Fabric CA服务器的配置文件。该配置文件包含了一些参数,如服务器的监听地址、证书和密钥文件的路径等。您可以根据自己的需求进行配置。 3. 生成CA服务器的证书和密钥:在启动Fabric CA服务器之前,您需要生成CA服务器的证书和密钥。您可以使用Fabric CA提供的工具来生成这些文件。生成证书和密钥后,将它们放置在配置文件中指定的路径下。 4. 启动Fabric CA服务器:完成配置后,您可以使用命令行启动Fabric CA服务器。通过运行命令 `fabric-ca-server start -b <admin-username>:<admin-password>`,其中`<admin-username>`和`<admin-password>`是您希望用于管理CA服务器的管理员用户名和密码。 5. 注册和管理身份:一旦Fabric CA服务器启动成功,您就可以使用CA客户端工具来注册和管理身份。通过运行命令 `fabric-ca-client register --id.name <identity-name> --id.secret <identity-password> --id.type <identity-type> --id.affiliation <identity-affiliation>`,您可以注册一个新的身份,并获取相应的证书和密钥。 以上是部署Fabric CA的一般步骤。请注意,具体的部署过程可能因您的环境和需求而有所不同。建议您参考Hyperledger Fabric的文档和教程,以获取更详细的部署指南和最新的更新内容。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值