------------------------------------------------------------- ==================================== > 技能 > 区块链 > Fabric CA/数字证书管理 MSP(Membership Service Provider)成员管理服务提供商
名词:
1。CSR(Cerificate Signing Request):证书签署请求文件
CSR 里包含申请者的 DN(Distinguished Name,标识名)和公钥信息(在第三方机构签署证书时要提供)。
证书颁发机构拿到 CSR 后使用其根证书私钥对证书进行加密并生成 CRT 证书文件,里面包含证书加密信息、申请者的 DN 、公钥信息。
一。概述
说明:
MSP 是 Hyperledger Fabric 1.0 引入的一个组件。目的:抽象化各成员之间的控制结构关系。(MSP 将证书颁发/用户认证/后台加密机制和协议都进行了抽象)
每个 MSP 可定义自己规则:身份认证/签名的生成/认证。
每个 Hyperledger Fabric 1.0 区块链网络可引入一个/多个 MSP 来进行网络管理。(即将成员本身和成员间操作、规则、流程都模块化)
1。成员身份是基于标准的 x.509 证书。利用 PKI 体系为每个成员颁发数字证书 。结合所属 MSP 进行身份认证和权限控制。
2。根 CA 证书(Root Certifica te):
【1】自签名证书
【2】用根 CA 证书私钥签名的证书还可签发新的证书
3。中间 CA 证书(Intermediate Certifica te)
【1】由其他 CA 证书签发
【2】用中间 CA 证书私钥签名的证书还可签发新的证书
签发证书是一个“信任背书”的过程。从根 CA 证书-》最终用户证书(构成一个“证书信任链”)
4。PKI 体系可利用“CRL(Certifica te Revoca tion List)”/“OCSP(Online Certifica te Status Protoca l)”管理证书有效性
【1】MSP 标识检查(身份证书都是和 MSP 绑定的,必须有相同的 MSP 标识才能验证证书的有效性)
【2】证书路径检查(主要证书路径[从用户证书-》根 CA 证书路径])
【3】CRL 检查(主要检查证书是否被吊销,目前仅支持 CRL 不支持 OCSP)
二。生成 MSP 证书
说明:
OpenSSL 可生成 X.509 证书,但在 Hyperledger Fabric 1.0 中不支持包含 RSA 密钥的证书。
下述采用 cryptogen 工具来生成 MSP 证书:
//下载 fabric 源码
cd /opt/gopath/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
//查看当前分支 release1.3,切换分支为 1.0
git branch #当前分支
git branch -r #查看所有分支
git checkout origin/release-1.0 #切换分支
//生成 MSP 证书工具在目录 e2e_cli 目录下
cd examples/e2e_cli
//调用 e2e 的工具生成证书
./generateArtifacts.sh
注:命令执行成功后,会在 e2e_cli 目录下产生文件夹 crypto-config。
在这个 MSP 中配置了两个组织(org1/org2)
每个组织下有两个 peer 节点(peer0/peer1):排序服务节点/CA 节点
配置节点的 MSP 证书
cd base
vi docker-compose-base.yml //基础镜像
三。MSP 配置的最佳实践
1。组织与 MSP 间建立映射关系
建议:实际组织和 MSP 间建立 1:1 对应关系
(1)一个组织对应多个 MSP 情况
1 个组织有 N 个部门。
1 个部门 > 1 MSP
1 个 peer 节点 > 1 MSP
同一组织内,不同 MSP(部门)的 peer 节点间不能互相认证。这样:同一组织的不同部门间不能同步数据。
(2)多个组织对应一个 MSP
同一个联盟的不同组织间采用相同的成员管理架构,数据会在不同组织间同步。
N 个组织 > 1 MSP (跨组织同步数据)
2。一个组织内部实现不同的权限控制
1 组织 > N 部门,实现不同部门的权限控制
实现一:为该组织内的所有部门定义一个 MSP
给 peer 节点配置 MSP 时,包含相同的:可信根 CA 证书列表、中间 CA 证书、管理员证书;不同的 peer 节点设置不同的所属部门(节点所属部门:利用证书和部门间映射的 OrganizaionalUnitIdentifiers 定义-msp/config.yaml)。
问题:数据还会在不同 peer 节点间同步。(因为:peer 节点在识别组织身份类型 OrgIdentityType 时,获取的是 MSP 标识,它会认为通道内相同 MSP 的节点都可以分发数据)
实现二:给组织内的每个部门单独定义 MSP
(1)为 peer 节点配置 MSP 时,不同部门配置的可信中间 CA 证书、管理员证书可以是不同的;不同部门成员的证书路径也是不同的。
解决问题:所有部门定义在同一个 MSP 中的问题
产生问题:增加管理上复杂度
(3)为每个部门设置不同的 MSP
利用证书和部门间映射 OrganizationalUnitIdentifiers 实现不同部门的权限控制,数据同步仍然会限制在不同部门内。
3。不同类型的节点分别使用不同的 MSP
需求:客户端、Peer 节点、排序服务节点分别设置不同的 MSP(身份信息包含 MSP 标识,可确定身份)
目的:验证背书的确是由 peer 节点签名而不是客户端/Orderer 服务节点签名
问题 1:
不同节点类型分别设置不同 MSP,对应的可信中间 CA 证书也不一样;
在通道设置时,需要包含不同的 MSP 及其可信中间 CA 证书,组织内的不同 MSP 成员才可访问通道里的数据。
同时,背书策略可指定只有 peer 节点对应的 MSP 成员背书的交易才有效。(目的:实现只能是 peer 节点才能背书签名)
同一个组织按不同节点类型设置 MSP 后,Peer 节点都有相同 MSP,Peer 节点间数据同步不会受影响,但会影响 Peer 节点&客户端交互.
在 peer 节点上,某些系统链码调用是和本地 MSP 相关的。
如:只执行本地 MSP 配置的由管理员发起的安装链码(install)请求/加入通道(Joinchain)请求等
应用程序执行这类系统调用时还需用到 peer 节点相同的 MSP 管理员签名密钥和证书
若不把这类系统调用功能放在应用程序中实现,正常的背书请求响应是没有问题的,因为 peer 节点接收背书请求检查的是有没有通道的写权限。
Peer 节点接收背书请求检查的是有没有通道的写入权限。(因此可在配置通道策略时增加客户端 MSP,C 端即可向 peer 节点提交请求了)
问题 2:
注册事件回调函数时,Peer 节点只处理和本地 MSP 相同的 C 端发起的请求。若 peer 节点和 C 端属于不同的 MSP,则会拒绝 C 端请求。
若业务依赖事件处理,应用程序和 peer 节点还是需要采用相同 MSP。
4。区分管理员和 CA 证书
注:不要把可信根 CA 证书/中间 CA 证书设置成 MSP 管理员证书。
目的:将成员管理、签发证书、验证证书等不同职责拆分开来。方便管理和定位(安全做法)
5。区分根 CA 证书和 TLS 的根 CA 证书
说明:MSP 的根 CA 证书、TLS 的根 CA 证书、相关的中间 CA 证书需要存放到不同文件夹中。
6。吊销已经颁发的证书
说明:已经颁发的证书可以被吊销,方法如下:
(1)。删除中间 CA 证书
删除 intermediatecerts 目录下的证书,这样由中间 CA 证书签发的证书都属于无效证书
(2)。增加 CRL 列表
可把中间 CA 证书/单个证书添加到 CRL 列表
重新配置本地 MSP 时:要删除 intermediatecerts 目录下的证书/crls 目录下增加 CRL 列表证书即可。
重新配置通道 MSP 时:需提交 CONFIG_UPDATE 的交易请求,生效后修改排序服务节点和 peer 节点的 MSP 配置。
颁发数字证书的 Fabric CA
一。概述
说明:
Fabric CA 是超级账本的数字证书 认证中心,提供如下功能:
1。用户信息的注册(身份认证,或者从 LDAP 中获取注册信息)
2。数字证书 的发行
发行担保证书 ECerts (Enrollment Certificates)
发行交易证书 TCerts (Transaction Certificates),保障 Hyperledger Fabric 区域链交易平台上的信息匿名性和不可追踪性;
3。数字证书 的延期和吊销
Fabric CA 由服务端 和 客户端组成(c/s 架构)。下图描述了 Fabric CA 组件在整个超级账本架构中的作用:
官方代码库:https://github.com/hyperledger/fabric-ca
root CA 不会直接为服务器/客户端签证。它会先生成几个中间 CA(intermediate CAS).
中间 CA 作为 root CA 的代表为服务器和客户端签证
说明:
1。Fabric CA 服务端:
提供用户登记和注册的数字证书 管理功能,数据存储后端可以为 Mysql/PostgreSQL/LDAP 等。
若配置 LDAP,则用户信息存于 LDAP(轻量目录访问协议)中。而不是 mysql/PostgreSQL(自由的对象-关系型数据库服务器(数据库管理系统))。
2。Fabric CA 服务采用无状态的集群部署
数据存储和业务逻辑分离,Fabric CA 服务能够采用无状态集群部署。通过 HAProxy 等软件实现“负载均衡”&“服务高可用”
3。Fabric CA 服务端提供 Restful 接口,供客户端工具和 HFC SDK 访问。
手工部署方式可采用客户端工具实现
若集成到应用程序中,可采用 HFC SDK 来实现。(通过 HFC SDK 注册的证书有多种类型:user/app/peer/orderer/client/validator/auditor 等)
与 Fabric CA 服务端交互的方式有如下两种:
A.通过 Fabric CA 客户端
B.使用某种 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)集群,以确保证书和身份的一致性。
二。Fabric CA 服务端安装部署
(一)准备工作
1。安装 GO 语言 1.9 以上版本
//Step1:切换 root 用户权限
sudo passwd root #设置密码
su root
//Step2:下载 go
wget -P /opt https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz
-P 指定下载到目录/opt 目录下
也可进入 opt 目录:cd /opt 直接下载
wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz
//Step3:解压缩
tar -C /opt -xzf go1.9.2.linux-amd64.tar.gz
-C 指定解压缩文件所在目录。
也可进入/opt 目录 cd /opt 直接解压缩
tar -xzf go1.9.2.linux-amd64.tar.gz
2。设置 GOPATH 环境变量
//编辑文件
vi /etc/profile
//加入下述配置
export GOROOT=/opt/go
export GOPATH=/opt/gopath
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
//退出保存 ESC->:wq
//配置文件生效
source /etc/profile
//查看 go 是否安装和配置环境变量成功
go version
显示:go version go1.9.2 linux/amd64 表示成功
3。确认 libtool 和 libtdhl-dev 已安装
//安装 libtool & libtdhl-dev
apt install libtool libltdl-dev
(二)安装 Fabric CA 服务端和客户端
//安装 git
apt-get install git
//查看版本号
git version
//安装 Fabric CA 服务端和客户端(fabric-ca-server & fabric-ca-client 安装至$GOPATH/bin 下)--需要花费一段时间
go get -u github.com/hyperledger/fabric-ca/cmd/...
注意:最新版本会有问题,可切换到 1.0 版本
cd /opt/gopath/src/github.com/hyperleder/fabric-ca #进入 fabric-ca 目录
git branch -r #查看所有分支
git checkout origin/release-1.0
cd /opt/gopath/src/github.com/hyperleder/fabric-ca/cmd/fabric-ca-server
go build
go install #安装 faric-ca-server
which fabric-ca-server #查看 fabric-ca-server 位置:/opt/go/bin/fabric-ca-server
cd ../fabric-ca-client
go build
go install #安装 fabric-ca-client
which fabric-ca-client #查看 fabric-ca-client 位置:/opt/go/bin/fabric-ca-client
(三)启动 Fabric CA 服务
方法一:通过命令行启动 Fabric CA 服务
//初始化 fabric-ca-server (目录任意位置)
fabric-ca-server init -b admin:adminpw
//启动 fabric-ca-server,使用默认设置(目录任意位置)
fabric-ca-server start -b admin:adminpw
-b 选项:提供注册用户的名称和密码
注:若未用 LDAP,则-b 选项必须
默认配置文件名称:faric-ca-server-config.yaml。路径可自定义。
//打印出证书的内容:
openssl x509 -in ca-cert.pem -noout -text
方法二:通过 Docker Hub 下载的镜像启动 Fabric CA 服务
1。访问https://hub.docker.com/r/hyperledger/fabric-ca/tags/ 获取 fabric-ca 版本
2。修改 docker-compose.yaml 文件
cd $GOPATH/src/github.com/hyperledger/fabric-ca/docker/server
vi docker-compose.yml
//docker-compose.yml 目录下
docker-compose up -d
若指定的镜像不存在,则 Docker 会主动拉取此镜像,然后启动 fabric-ca 服务实例
//查看启动的 docker 服务
docker ps
//列出 fabric-ca 镜像
docker image ls hyperledger/fabric-ca
即可查看到 TAG=x86_64-1.0.0 的镜像
方法三:通过源码编译生成 Docker 镜像,以启动 Fabric CA 服务
//使用 docker-compose 编译和启动服务
cd $GOPATH/src/github.com/hyperledger/fabric-ca
//编译
make docker
cd docker/server
//启动 fabric ca 服务
docker-compose-up -d
hyperledger/fabric-ca 镜像同时包含 Fabric CA 的服务端 fabric-ca-server 和客户端 fabric-ca-client
(四)fabric-ca-server 命令行选项
$ fabric-ca-server
$ fabric-ca-server --help
View Code
View Code
注:参数类型标记为“stringSlice”的选项,表示可以批量指定多个参数,形如—— “string0 string1 … stringN” 的形式,此时外层必须有双引号,且各项之间以空格分开;多次分开指定则不需要加双引号,如 -csr.hosts “host1 host2” 与 -csr.hosts host1 -csr.hosts host2 效果相同。
(五)Fabric CA 数据库存储
Fabric CA 默认数据库存储【SQLite】,文件名【fabric-ca-server.db】。若要考虑集群部署,可采用
【mysql】/【PostgreSQL】数据库
【SQLite】的数据存储配置:
1。基于 Mysql 的数据存储
相关配置参考:https://dev.mysql.com/doc/refman/5.7/en/identifiers.html
按【sqlite3】配置。type:mysql /datasource:mysql 连接信息
db:
type:mysql
datasource:root:rootpw@tcp(localhost:3306)/fabric-ca?parseTime=true&tls=custom
若要通过 TLS 连接 mysql,必须设置 db.tls。同时 mysql 也要配置允许 tls 访问。
db:
...
tls:
enabled:true
certifiles: #是 PEM 编码的可信根证书文件列表
- db-server-cert.pem
client:
certfile:db-client-cert.pem #PEM 编码的证书文件
keyfile:db-client-key.pem #PEM 编码的密钥文件
##certfile & keyfile 用于 fabric ca 服务与 mysql 数据库之间建立安全的连接
2。基于 PostgreSQL(自由的对象-关系型数据库服务器(数据库管理系统))的数据存储
Fabric CA 服务端配置文件参考如下:
db:
type:postgres
datasource:host=localhost port=5432 user=username password=pwd
dbname=fabric_ca sslmode=verify-full
PostgreSQL 上配置 SSL 步骤:
(1)在 postgresql.conf 中,打开 SSL,设置为 on(SSL=on)
(2) 将你信任的 CA 证书 root.crt 放在 PostgreSQL 的 data 目录中
(3)在 pg_hba.conf 中 hostssl 位置,设置 clientcert 参数为 1
如何生成签名证书:https://www.postgresql.org/docs/9.5/static/ssl-tcp.html
PostgreSQL 官方文档: https://www.postgresql.org/docs/9.4/static/libpq-ssl.html
3。基于 LDAP(轻量目录访问协议)的数据存储
Fabric CA 服务器可通过配置连接到 LDAP 服务器,实现如下功能:
(1)。用户注册时从 LDAP 服务器中读取信息进行认证
(2)。用户鉴权时从 LDAP 服务器中读取属性信息进行验证
配置方式:修改 Fabric CA 服务器配置文件内的 LDAP 选项。参考:https://github.com/osixia/docker-openldap
配置好 LDAP 服务器后,用户注册过程如下所示:
(1)Fabric CA 客户端或客户端 SDK 发送带有基本授权头部的用户注册请求
(2)Fabric CA 服务器接收到用户注册请求后,解析出头部的用户名称和注册密码。
通过在配置文件中设置”userfilter”可以查找用户对应的可识别名称(Distinguished Name,DN)。
尝试执行 LDAP 绑定用户的注册密码进行身份验证。
若绑定成功,则用户注册就被认证通过。
(六)Fabric CA 服务端操作使用
访问 Fabric CA 两种方式:【1】Fabric CA 客户端工具 【2】RESTful 接口
1。Fabric CA 客户端工具
(1)。Fabric CA 客户端命令行选项
View Code
View Code
注:参数类型标记为“stringSlice”的选项,表示可以批量指定多个参数,形如—— “string0 string1 … stringN” 的形式,此时外层必须有双引号,且各项之间以空格分开;多次分开指定则不需要加双引号,如 -csr.hosts “host1 host2” 与 -csr.hosts host1 -csr.hosts host2 效果相同。
(2)。注册初始化的管理员用户
说明:在 Fabric CA 服务端启动时有一个管理员用户,需要先注册初始化的管理员用户,获取注册证书后,才能进行后续操作。
注册初始化管理员用户步骤如下:
Step1:在 fabric ca 服务端配置文件 fabric-ca-server-config.yaml 中设置客户端 CSR(证书签名请求)。里面选项可自定义,只有”csr.cn”必须设置成初始化管理员 ID。
//设置获取注册证书存储目录的环境变量
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
//访问运行在本地 7054 端口的 fabric-ca 服务端
fabric-ca-client enroll -u http://admin:adminpw@localhost:7054
上述命令:
1。获取注册证书 Ecert 和对应的私钥
2。CA 证书链和 PEM 文件存储在环境变量 FABRIC_CA_CLIENT_HOME 目录下的 msp 子目录中。
(3)。登记一个新用户
注:只有已注册的用户才可以发起登记(Register)请求。
发起登记请求的用户称为登记员(Registrar).登记用户时需要具有相应权限。
Fabric CA 服务端在接收到登记请求时需要检查:
A。登记员需要有登记用户的权限。
登记类型记录在“hf.Registrar.Roles”属性中。若内容保存“peer/user/app”,则登记员可登记 peer/app/user 类型用户但不能登记 orderer 类型用户。
B。登记员只能登记自己归属范围内的用户
Eg: 登记员归属 a.b,可登记 a.b.c 的用户,不能登记 a.c 用户。
若不指定登记用户归属,默认和登记员归属一样。
C。登记用户属性需要满足以下条件:
(a)。登记的用户属性需要包含在登记员的用户属性(hf.Registar.Attributes)。目前只支持通配符“*”。
Eg:a.b.*代表所有以 a.b 开头的属性名称
(b)。若登记用户也有 hf.Registar.Attritbutes 属性,则用户属性需要是登记员用户属性子集。
Eg: 登记员 hf.Registar.Attributes 属性值:a.b.*,x.y.z
则:登记用户 hf.Registar.Attributes 属性值可以为:a.b.c,x.y.z
//登记员是 admin,登记新用户是 admin2
$export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
$fabric-ca-client register --id.type user --id.name admin2 --id.affiliation org1.department1 --id.attrs 'hf.Revoker=true,admin=true:ecert'
//:ecert 指 admin 属性及其值会添加到用户注册证书中,从而用来实现访问控制
//命令动行后会打印注册密码,用户注册时需要该注册密码
修改:增加 type
说明:
在登记用户时可使用“-id.attrs”选项同时指定多个属性。之间由“,”号分隔。
fabric-ca-client register -d --id.name admin2 --id.affiliation org1.department1 --id.attrs '"hf.Registrar.Roles=peer,user",hf.Revoker=true'
“-id.attrs”可以有多个
fabric-ca-client register -d --id.name admin2 --id.affiliation org1.department1 --id.attrs '"hf.Registrar.Roles=peer,user"' --id.attrs hf.Revoker=true
登记用户默认值在 Fabric ca 客户端配置文件:
下述命令登记用户,会从上面配置文件中读取默认值。包括 type/affiliation/attributes
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
fabric-ca-client register --id.name admin3
登记 Peer 节点
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin //设置显示环境变量
fabric-ca-client register --id.name peer1 --id.type peer --id.affiliation org1.department1 --id.secret peer1pw
(4)。Peer 节点的注册
通过命令行在“Fabric CA 服务端登记了 Peer 节点”后,可以通过登记的“用户名和注册密码”获取注册证书。
//设置环境变量 peer1 目录位置
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1
//根据用户名(peer1)和密码(peer1pw)获取注册证书
//-M 值为 peer 节点的 MSP 目录,它保存获取到的注册证书等信息
fabric-ca-client enroll -u http://peer1:peer1pw@localhost:7054 -M $FABRIC_CA_CLIENT_HOME/msp
Orderer 节点注册同上。只需要将对应的 MSP 目录路径修改为 orderer 对应的 msp 目录即可。
上述目录:
cacerts:存储可信的 CA 根证书 / signcerts 为 ca 验证签名的证书 / keystore
(5)。重新获取用户的注册证书
若注册证书将要过期/私钥泄露,则可调用 reenroll 命令重新申请新的注册证书
//设置环境变量 peer1 目录位置
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1
//重新获取用户注册证书
fabric-ca-client reenroll
(6)。用户注销
一个身份/证书可以被注销。
注销身份:则会注销其拥有的所有证书,并阻止其申请新证书。
注销证书:只是对单个证书进行无效处理。
格式:fabric-ca-client revoke -e <enrollment_id> -r <reason>
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
//注销 peer1 身份
fabric-ca-client revoke -e peer1
也可用 API 和序列号注销:–未测试成功
//openssl 获取证书 API 和序列号
serial=$(openssl x509 -in userecert.pem -serial -noout | cut -d "=" -f 2)
aki=$(openssl x509 -in userecert.pem -text | awk '/keyid/ {gsub(/*keyid:|:/,"",$1);print tolower($0)}')
//撤销
fabric-ca-client revoke -s $serial -a $aki -r affiliationchange
(7)。获取 CA 证书链
msp/cacerts 目录:存储的是可信的 CA 根证书
//从 fabric ca 服务器获取根 CA 证书
fabric-ca-client getcacert
【1】启动一个 CA2 的 Fabric CA 服务
//启动一个 CA2 的 Fabric CA 服务,监听端口为 7055
export FABRIC_CA_SERVER_HOME=$HOME/ca2
fabric-ca-server start -b admin:ca2pw -p 7055 -n CA2
【2】获取 CA2 的根 CA 证书,并保存到 peer1 的 msp 目录下。
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1
fabric-ca-client getcacert -u http://localhost:7055 -M $FABRIC_CA_CLIENT_HOME/msp
(8)。使用 TLS
Fabric CA 客户端可通过 fabric-ca-client-config.yaml 配置 tls
2。RESTful 接口
Fabric CA 提供了多个接口,包括:获取 CA 信息/获取注册证书/重新获取注册证书/用户登记/用户注销/批量获取交易证书等。
Fabric CA 提供的 RESTful 接口,可通过 http/https 访问。
【1】获取 CA 信息
请求类型:GET / 请求 URL:/api/v1/cainfo
【2】获取注册证书
请求类型:POST / 请求 URL:/api/v1/enroll
【3】重新获取注册证书
请求类型:POST / 请求 URL:/api/v1/reenroll
【4】用户登记
请求类型:POST / 请求 URL:/api/v1/register
【5】用户注销
请求类型:POST / 请求 URL:/api/v1/revoke
【6】批量获取交易证书
请求类型:POST / 请求 URL:/api/v1/tcert
私密信息管理利器 HashiCorp Vault
HashiCorp Vault 简介
HashiCorp Vault 启动和读写
HashiCorp Vault 加密引擎
HashiCorp Vault 验证和授权
HashiCorp Vault 部署
HashiCort REST API
Fabric CA 官方用户指南(中文版) Hyperledger fabric性能测试及分析