联盟链HyperledgerFabric2.2生产环境部署流程(一)- Fabric CA

特别说明一下,本系列博文(多篇)是以Hyperledger Fabric官方文档为基础,模拟搭建一个由4个组织(R1,R2,R3,R4)组件的联盟链系统。

全文会以这篇文章的描述顺序一步一步来,因为我觉得这样会给大家一个更直观的感受。Hyperledger Fabric示例网络原文

当前页文章主要学习CA的服务部署,原文地址:https://hyperledger-fabric-ca.readthedocs.io/en/latest/users-guide.html

证书颁发机构(Certificate Authorities,CA)

Hyperledger Fabric 支持交易网络,所有参与者都拥有已知身份。公钥基础结构用于生成与组织、网络组件以及终端用户或客户端应用程序相关联的加密证书。因此,可以在更广泛的网络和通道级别上操纵和管理数据访问控制。Hyperledger Fabric 的这种“许可”概念,加上通道的存在和功能,有助于解决隐私和机密性较高的问题。

请参阅 成员服务提供者 (MSP) 主题,以更好地了解加密实现,以及 Hyperledger Fabric 中使用的签名、验证、身份认证方法。

CA就是为成员颁发身份证明的重要组件。

在搭建Hyperledger Fabric网络之前,它会被用来给管理者和网络节点颁发证书。因为它会分配 X.509 证书,这个证书能够用来识别属于组织 R4 的组件。

简介:

Fabric CA是Fabric 提供了一个内置的 CA 组件,允许在你的区块链网络中创建 CA。  在实际生产环境下,我们可以按实际情况使用自己的CA服务,并非一定要用Fabric CA。

Fabric CA由服务端和客户端组件组成,CA服务端(fabric-ca-server)可以看作一个web服务,执行了Go代码编译生成的二进制文件后,会监听一个端口,处理收到的请求。

CA客户端(fabric-ca-client)其实就是一个向CA服务端发送请求的程序,执行编译成的二进制文件并带上不同参数,可以向CA服务器发送相应的http请求,完成一系列操作。

源码地址:https://github.com/hyperledger/fabric-ca/

1.环境要求:

  • Go 1.13+ installation
  • GOPATH environment variable is set correctly
  • libtool and libtdhl-dev packages are installed

在Ubuntu上安装libtool依赖项

sudo apt install libtool libltdl-dev

在MacOSX上安装了libtool依赖项:

brew install libtool

2.安装

官方建议使用go get 快速获取程序可执行文件

go get -u github.com/hyperledger/fabric-ca/cmd/...

以上代码将fabric-ca-serverfabric-ca-client二进制文件安装到系统中,并位于 $GOPATH/bin/目录下。

并且会clone源码到$GOPATH/src/github.com/hyperledger/fabric-ca/目录下。

查看是否安装成功

fabric-ca-client version
fabric-ca-server version

3.启动CA服务

官方有两种,

  • 直接启动本地服务
  • 在docker内启动服务

因为docker的便利和易于管理性,我这里选择通过docker启动

Ubuntu 18.04 安装Docker 和 Docker-Compose方法

1.到 Docker Hub 页面查找镜像版本

其实这里可以通过digest看出 latest,1.4,1.49都是同一版本,为了方便演示我现在这个1.4.9的tag演示

2.创建docker-compose.yml文件

sudo vi docker-compose.yml
#文件名必须是 docker-compose.yml

########################文本内容###########################
fabric-ca-server:
  image: hyperledger/fabric-ca:amd64-1.4.9   #注意这里要更改为你要使用的镜像tag
  container_name: fabric-ca-server
  ports:
    - "7054:7054"
  environment:
    - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
  volumes:
    - "./fabric-ca-server:/etc/hyperledger/fabric-ca-server"
  command: sh -c 'fabric-ca-server start -b admin:adminpw'

#-b admin:adminpw
#admin 是我们指定的用户,我们现在给admin生成证书
#adminpw 是admin的密码

3.启动服务

在与docker-compose.yml文件相同的目录中打开一个终端,然后执行以下命令。

如果指定的fabric-ca映不存在本地,会自动在Compose文件中将其下拉,并启动fabric-ca服务器的实例。

sudo docker-compose up -d

因为我的docker-compose.yml文件在/mnt目录下。所以如图所示:

通过docker ps 查看运行情况

4.修改fabric-ca-server-config.yaml默认的组织信息

接下来我们要修改默认的fabric-ca-server-config.yaml文件内的affiliations信息,像这样

关闭之前的fabric-ca-server容器

然后删除原来的/mnt/fabric-ca-server/fabric-ca-server.db 文件

sudo rm -rf /mnt/fabric-ca-server/fabric-ca-server.db

然后重新启动

4.Fabric CA Server

了解docker的用户应该知道,在上面的docker-compose.yml文件中,我们写了一行命令,这行命令会在我们启动docker容器时运行

这段命令会在启动fabric-ca-server服务时为我们的admin生成一个的证书 ca-cert.pem,因为docker-compose.yml里定义了绑定了当前目录,我们可以看到当前目录下有一个fabric-ca-server文件夹,并且可以通过tree命令查看完整目录

  • msp :包含keystore,CA服务器的私钥
  • ca-cert.pem :CA服务器生成的admin证书
  • fabric-ca-server.db :CA默认使用的嵌入型数据库 SQLite,存储发放证书信息,可以通过sqllite3或其他可视化工具查看详细信息。
  • fabric-ca-server-config.yaml :CA服务端的配置文件

这是刚刚执行生成的证书文件,我们可以通过openssl命令查看证书内容

openssl x509 –in ca-cert.pem –inform pem –noout -text

看不懂不要紧,反正这也不是重点

5.生成R4的证书(适用于给任何组织或个人生成证书)

回顾一下我们刚刚所做的事情

  1. 在docker中启动了一个 fabric-ca-server的服务
  2. 在部署服务端时,生成了一个admin证书

还记得我们在2.安装中的CA的客户端 fabric-ca-client 吗?

接下来我们将使用客户端来生成组织R4的管理员证书

1.设置client环境变量

#在当前目录生成ca_client文件夹
sudo mkdir ca_client

#设置FABRIC_CA_CLIENT_HOME变量
export FABRIC_CA_CLIENT_HOME=/mnt/ca_client

像这样

2.通过fabric-ca-client程序链接CA服务器并enroll(登录)admin管理员

fabric-ca-client enroll -u http://admin:adminpw@localhost:7054

#admin是用户名
#adminpw是admin的密码
#localhost:7054 fabric-ca-server端口,这是刚刚在docker-compose.yml指定的

这个时候我们可以看到我们的/mnt/ca_client目录下会生成证书文件,像这样

可以发现/mnt/ca_client目录下生成了一个fabric-ca-client-config.yaml配置文件,以及msp目录,包含管理员的证书和私钥。有了已经成功enroll(登录)的admin用户,接下来将admin作为管理员来register(登记)一个新用户:R4-admin

3.通过fabric-ca-clientregister(登记)R4管理员的证书

fabric-ca-client register --id.name r4-admin --id.secret r4-adminpw --id.type admin --id.affiliation r4.admin

register成功后会有这样的显示

4.登录并获取r4-admin的证书到本地

fabric-ca-client enroll -u http://r4-admin:r4-adminpw@localhost:7054 -M $FABRIC_CA_CLIENT_HOME/r4-admin

#r4-admin:r4-adminpw 对应的用户名和密码
#-M 指定的是r4-admin证书保存的位置

提示成功

现在我们再看本地文件目录

可以看成我们已经成功获取到了r4-admin的证书了

6.查看已颁发的所有证书信息

1.安装sqllite3工具

sudo apt-get install sqlite3 libsqlite3-dev

2.查看证书数据

sqlite3 fabric-ca-server/fabric-ca-server.db

sqlite> .tables
sqlite> select * from certificates;

到这里,我们通过在Docker部署fabric-ca服务,并通过创建登录了CA的admin账户以及R4-admin的账户了。

有问题或建议的小伙伴欢迎留言骚扰!

猜你喜欢

转载自blog.csdn.net/Lyon_Nee/article/details/109853575