Fabric CA 是 Hyperledger Fabric 的官方配套认证设施。
原文链接:http://hyperledger-fabric.readthedocs.io/en/latest/Setup/ca-setup.html
它提供的功能有:
- 身份认证,或者从 LDAP 中获取注册信息;
- 发行担保证书 ECerts (Enrollment Certificates);
- 发行交易证书 TCerts (Transaction Certificates),保障 Hyperledger Fabric 区域链交易平台上的信息匿名性和不可追踪性;
- 证书更新和撤销。
Fabric CA 属于典型的 CS (Client and Server) 架构,官方代码库:https://github.com/hyperledger/fabric-ca 。
本文目录
- 概述
- 入门
- 运行环境要求
- 安装
- Fabric CA 终端命令概览
- 配置文件格式
- 服务端配置文件格式
- 客户端配置文件格式
- 配置信息的优先级
- Fabric CA 服务端
- 服务端初始化
- 启动服务端
- 配置数据库
- 配置LDAP
- 配置集群
- Fabric CA 客户端
- 注册管理员账户
- 登记信息
- 担保背书(发放证书)
- 重新背书(更新证书)
- 撤销证书与清除注册信息
- 启用 TLS
- 附录
概述
开篇的图示展现了 Fabric CA 服务端是如何参与到 Hyperledger Fabric 整体架构中去的。
与 Fabric CA 服务端交互的方式有如下两种:
- 通过 Fabric CA 客户端
- 使用某种 Fabric SDK
与 Fabric CA 服务端的所有通信,都是通过 REST API 进行的。详情可查看 fabric-ca/swagger/swagger-fabric-ca.json 处的 swagger 文档中的 REST API 部分。
如前图所示,Fabric CA 客户端或 SDK 的请求首先会到达 Fabric CA 集群前端的高可用负载均衡服务端,实际的 CA 服务由后端的某台Fabric CA 服务端提供。同一集群中的所有 Fabric CA 服务端共享相同的后端数据库(或 LDAP)集群,以确保证书和身份的一致性。
入门
运行环境要求
-
- Go 语言 1.7 及以上版本
- 已正确设置 GOPATH 环境变量
- 已安装 libtool 与 libtdhl-dev 包(更多信息请参看:https://www.gnu.org/software/libtool/)
安装
如下所示,将安装 fabric-ca-server 与 fabric-ca-client 两个终端命令行工具。
# go get -u github.com/hyperledger/fabric-ca/cmd/...
启动服务端:本地环境
如下所示,将按默认配置启动 Fabric CA 服务端,-b 选项用于指定管理员的账号与密码。
# fabric-ca-server start -b admin:adminpw
默认将在当前目录创建一个名为 fabric-ca-server-config.yaml 的配置文件,该文件的存储位置也可以另行指定。
启动服务端:Docker 环境
也可以选择在 Docker 环境下运行服务端,如下将创建并通过 docker-compose 启动服务端
# cd $GOPATH/src/github.com/hyperledger/fabric-ca # make docker # cd docker/server # docker-compose up -d
名为 hyperledger/fabric-ca 的 docker 镜像中包含了 fabric-ca-server 与 fabric-ca-client 命令行工具。
Fabric CA 终端命令概览
fabric-ca-server 命令用法:
1 Hyperledger Fabric Certificate Authority Server 2 3 Usage: 4 fabric-ca-server [command] 5 6 Available Commands: 7 init Initialize the Fabric CA server 8 start Start the Fabric CA server 9 10 Flags: 11 --address string Listening address of Fabric CA server (default "0.0.0.0") 12 -b, --boot string The user:pass for bootstrap admin which is required to build default config file 13 --ca.certfile string PEM-encoded CA certificate file (default "ca-cert.pem") 14 --ca.chainfile string PEM-encoded CA chain file (default "ca-chain.pem") 15 --ca.keyfile string PEM-encoded CA key file (default "ca-key.pem") 16 -n, --ca.name string Certificate Authority name 17 -c, --config string Configuration file (default "fabric-ca-server-config.yaml") 18 --csr.cn string The common name field of the certificate signing request to a parent Fabric CA server 19 --csr.hosts stringSlice A list of space-separated host names in a certificate signing request to a parent Fabric CA server 20 --csr.serialnumber string The serial number in a certificate signing request to a parent Fabric CA server 21 --db.datasource string Data source which is database specific (default "fabric-ca-server.db") 22 --db.tls.certfiles stringSlice PEM-encoded list of trusted certificate files 23 --db.tls.client.certfile string PEM-encoded certificate file when mutual authenticate is enabled 24 --db.tls.client.keyfile string PEM-encoded key file when mutual authentication is enabled 25 --db.type string Type of database; one of: sqlite3, postgres, mysql (default "sqlite3") 26 -d, --debug Enable debug level logging 27 --ldap.enabled Enable the LDAP client for authentication and attributes 28 --ldap.groupfilter string The LDAP group filter for a single affiliation group (default "(memberUid=%s)") 29 --ldap.url string LDAP client URL of form ldap://adminDN:adminPassword@host[:port]/base 30 --ldap.userfilter string The LDAP user filter to use when searching for users (default "(uid=%s)") 31 -p, --port int Listening port of Fabric CA server (default 7054) 32 --registry.maxenrollments int Maximum number of enrollments; valid if LDAP not enabled 33 --tls.certfile string PEM-encoded TLS certificate file for server's listening port (default "ca-cert.pem") 34 --tls.clientauth.certfiles stringSlice PEM-encoded list of trusted certificate files 35 --tls.clientauth.type string Policy the server will follow for TLS Client Authentication. (default "noclientcert") 36 --tls.enabled Enable TLS on the listening port 37 --tls.keyfile string PEM-encoded TLS key for server's listening port (default "ca-key.pem") 38 -u, --url string URL of the parent Fabric CA server 39 40 41 Use "fabric-ca-server [command] --help" for more information about a command.