之前介绍了使用官方脚本自动化启动一个Fabric网络,并且所有的证书都是通过官方的命令行工具cryptogen直接生成网络中的所有节点的证书。在开发环境可以这么简单进行,但是生成环境下还是需要我们自定义对网络中的节点的证书进行配置。
所以在本文中,将会详细介绍一个从手动生成证书一直到启动网络的整体步骤。本文只交代整体的搭建步骤。对于Fabric-Ca的讲解不在本文的范围内,将在另一篇文章中说明。
正篇文章也是根据官方的文档进行的。但是由于官方的文档尚未完工,也是好多没有交代清楚的,并且有些地方是错误的,所以笔者也是一步一步摸索出来的,所以如果本文哪里没有交代清楚或者错误的地方,希望各位批评指正。
在这里贴出官方文档地址.
1.整体架构
架构图直接贴过来好了:
系统架构
官方文档采用的是多机环境,这里简洁化一点,所有的操作都在一台机器上进行,至于多机环境,以后再补充好了。
介绍一下本文所采用的整体架构:
三个组织
Org0 -> 组织0
Org1 -> 组织1
Org2 -> 组织2
组织中的成员
Org0 一个Orderer节点,一个Org0的Admin节点
Org1 两个Peer节点,一个Org1的Admin节点,一个Org1的User节点
Org2 两个Peer节点,一个Org2的Admin节点,一个Org2的User节点
共有四台CA服务器
TLS服务器 -> 为网络中所有节点颁发TLS证书,用于通信的加密
Org1的CA服务器 -> 为组织1中所有用户颁发证书
Org2的Ca服务器 -> 为组织2中所有用户颁发证书
Org0的CA服务器 -> 为组织0中所有用户颁发证书
这里的四台CA服务器都是根服务器。彼此之间都是独立的存在,没有任何关系。,也就是说每一个CA服务器生成的证书在其他CA服务器都是不能用的。
介绍完之后,可以进入正题了。
1.1Fabric,Fabric-Ca安装
本文默认读者都是对Fabric有一定的了解的,所以一些安装过程这里就没有重复说明。
第一步是安装Fabric-Ca环境,可以参考这里,这篇文章还没有写完,以后慢慢补,不过环境的安装已经有说明。
还有就是Fabric的环境安装,可以参考这里。
完成环境搭建后,我们还需要一个HOME文件夹,用于存放我们生成的证书文件与fabric配置相关的文件。
本文设置HOME文件夹路径为:
$GOPATH/src/github.com/caDemo/
请读者自行创建,一般不要用太复杂的路径,也不要用中文路径,会为之后的操作带来很多麻烦。在下文中简单称HOME文件夹为工作目录,除非特殊说明,一般命令的执行都是在工作目录进行。
2 CA服务器配置
2.1启动TLS CA服务器
前期工作准备好之后,我们开始启动第一台CA服务器。本文中使用Docker容器启动。
首先在工作目录创建docker-compose.yaml文件:
touch docker-compose.yaml
并在文件内添加以下内容(tips:内容格式不要乱掉):
version: '2'
networks:
fabric-ca:
services:
ca-tls:
container_name: ca-tls
image: hyperledger/fabric-ca
command: sh -c 'fabric-ca-server start -d -b tls-ca-admin:tls-ca-adminpw --port 7052'
environment:
- FABRIC_CA_SERVER_HOME=/ca/tls
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CSR_CN=ca-tls
- FABRIC_CA_SERVER_CSR_HOSTS=0.0.0.0
- FABRIC_CA_SERVER_DEBUG=true
volumes:
- $GOPATH/src/github.com/caDemo:/ca ##重要!!!记得修改这里的路径为自己的工作目录
networks:
- fabric-ca
ports:
- 7052:7052
启动该docker容器:
docker-compose -f docker-compose.yaml up ca-tls
如果命令行出现以下内容则说明启动成功:
[INFO] Listening on https://0.0.0.0:7052
同时工作目录下会出现一个tls的文件夹。文件夹中的内容暂先不解释,留着在另一篇文章中说明。不过有一个文件需要解释一下,因为之后会用到。
在$GOPATH/src/github.com/caDemo/tls/路径下的ca-cert.pem文件。这是TLS CA服务器签名的根证书,目的是用来对CA的TLS证书进行验证,同时也需要持有这个证书才可以进行证书的颁发。在多机环境下,我们需要将它复制到每一台机器上,不过本文采用的是单机环境,所以省略掉了这一步。
2.2 TLS CA服务器注册用户
第一步是在TLS CA服务器中注册用户,经过注册的用户才拥有TLS证书,本文中由于只在各节点之间进行TLS加密通信,所以只将orderer和peer节点的身份注册到TLS服务器。
打开一个新的终端输入以下命令:
#设置环境变量指定根证书的路径(如果工作目录不同的话记得指定自己的工作目录,以下不再重复说明)
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/tls/ca-cert.pem
#设置环境变量指定CA客户端的HOME文件夹
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/tls/admin
#登录管理员用户用于之后的节点身份注册
fabric-ca-client enroll -d -u https://tls-ca-admin:tls-ca-adminpw@0.0.0.0:7052
登录成功在工作目录下的tls文件夹下将出现一个admin文件夹,这里面是admin的相关证书文件.
并且只有登录了admin,才具有权限进行用户的注册,因为该用户具有CA的全部权限,相当于CA服务器的root用户。
接下来对各个节点进行注册。
fabric-ca-client register -d --id.name peer1-org1 --id.secret peer1PW --id.type peer -u https://0.0.0.0:7052
fabric-ca-client register -d --id.name peer2-org1 --id.secret peer2PW --id.type peer -u https://0.0.0.0:7052
fabric-ca-client register -d --id.name peer1-org2 --id.secret peer1PW --id.type peer -u https://0.0.0.0:7052
fabric-ca-client register -d --id.name peer2-org2 --id.secret peer2PW --id.type peer -u https://0.0.0.0:7052
fabric-ca-client register -d --id.name orderer-org0 --id.secret ordererPW --id.type orderer -u https://0.0.0.0:7052
这里将三个组织中的节点都进行了注册。
不过-d这个参数并没有找到相关资料
id.name是指定用户的名称
--id.secert是指定密码
--id.type是指定用户类型,用户类型默认为client,主要包括peer,app,user,orderer.
-u则是指定请求CA服务器的URL。
这里我们为各个节点注册TLS证书,之后Fabric网络的通信则需要通过这一步骤注册过的用户的TLS证书来进行TLS加密通信。
到这里我们只是注册了各个节点的身份,还没有获取到他们的证书。证书可以通过登录获取,不过暂时不着急获取他们的TLS证书。
接下来,我们对其他几个CA服务器进行配置。
2.3配置Org0的CA服务器
再强调一下,本文中的几个CA服务器都是根服务器,彼此之间没有任何关系,所以上一步骤的TLS CA服务器在这一部分并没有用到。
同样,本文使用Docker容器启动CA服务器。配置文件如下,只需要添加进之前的docker-compose.yaml文件中就好:
org0:
container_name: org0
image: hyperledger/fabric-ca
command: /bin/bash -c 'fabric-ca-server start -d -b org0-admin:org0-adminpw --port 7053'
environment:
- FABRIC_CA_SERVER_HOME=/ca/org0/crypto
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CSR_CN=org0
- FABRIC_CA_SERVER_CSR_HOSTS=0.0.0.0
- FABRIC_CA_SERVER_DEBUG=true
volumes:
- $GOPATH/src/github.com/caDemo:/ca
networks:
- fabric-ca
ports:
- 7053:7053
添加完之后启动它:
docker-compose -f docker-compose.yaml up org0
打开另一个终端,接下来注册org0的用户:
#首先指定环境变量,这里的TLS证书不是之前的TLS CA服务器的根证书,而是本组织CA服务器启动时生成的TLS根证书
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/org0/crypto/ca-cert.pem
#指定本组织的CA客户端工作目录
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/org0/admin
登录org0的CA服务器管理员身份用于注册本组织的用户:
fabric-ca-client enroll -d -u https://org0-admin:org0-adminpw@0.0.0.0:7053
在本组织中共有两个
Hyperledger Fabric手动生成CA证书搭建Fabric网络
最新推荐文章于 2022-07-01 22:17:10 发布