• -------------------------------------------------------------
  • ====================================

Fabric CA/数字证书管理

区块链 dewbay 4年前 (2020-09-29) 1810次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

MSP(Membership Service Provider)成员管理服务提供商

 

名词:

1。CSR(Cerificate Signing Request):证书签署请求文件

CSR 里包含申请者的 DN(Distinguished Name,标识名)和公钥信息(在第三方机构签署证书时要提供)。

证书颁发机构拿到 CSR 后使用其根证书私钥对证书进行加密并生成 CRT 证书文件,里面包含证书加密信息、申请者的 DN 、公钥信息。

 

一。概述

说明:

MSP 是 Hyperledger Fabric1.0 引入的一个组件。目的:抽象化各成员之间的控制结构关系。(MSP 将证书颁发/用户认证/后台加密机制和协议都进行了抽象)

每个 MSP 可定义自己规则:身份认证/签名的生成/认证。

每个 Hyperledger Fabric 1.0 区块链网络可引入一个/多个 MSP 来进行网络管理。(即将成员本身和成员间操作、规则、流程都模块化)

1。成员身份是基于标准的 x.509 证书。利用 PKI 体系为每个成员颁发数字证书。结合所属 MSP 进行身份认证和权限控制。

2。根 CA 证书(Root Certificate):

【1】自签名证书

【2】用根 CA 证书私钥签名的证书还可签发新的证书

3。中间 CA 证书(Intermediate Certificate)

【1】由其他 CA 证书签发

【2】用中间 CA 证书私钥签名的证书还可签发新的证书

签发证书是一个“信任背书”的过程。从根 CA 证书-》最终用户证书(构成一个“证书信任链”)

4。PKI 体系可利用“CRL(Certificate Revocation List)”/“OCSP(Online Certificate Status Protocal)”管理证书有效性

【1】MSP 标识检查(身份证书都是和 MSP 绑定的,必须有相同的 MSP 标识才能验证证书的有效性)

【2】证书路径检查(主要证书路径[从用户证书-》根 CA 证书路径])

【3】CRL 检查(主要检查证书是否被吊销,目前仅支持 CRL 不支持 OCSP)

二。生成 MSP 证书

说明:

OpenSSL 可生成 X.509 证书,但在 Hyperledger Fabric1.0 中不支持包含 RSA 密钥的证书。

下述采用 cryptogen 工具来生成 MSP 证书:

Fabric CA/数字证书管理
//下载 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 节点
Fabric CA/数字证书管理

Fabric CA/数字证书管理

配置节点的 MSP 证书

cd base
vi docker-compose-base.yml   //基础镜像

Fabric CA/数字证书管理Fabric CA/数字证书管理

三。MSP 配置的最佳实践

1。组织与 MSP 间建立映射关系

建议:实际组织和 MSP 间建立 1:1 对应关系

Fabric CA/数字证书管理
(1)一个组织对应多个 MSP 情况

1 个组织有 N 个部门。

1 个部门 > 1 MSP

1 个 peer 节点 > 1 MSP

同一组织内,不同 MSP(部门)的 peer 节点间不能互相认证。这样:同一组织的不同部门间不能同步数据。

(2)多个组织对应一个 MSP

同一个联盟的不同组织间采用相同的成员管理架构,数据会在不同组织间同步。

N 个组织 > 1 MSP (跨组织同步数据)
Fabric CA/数字证书管理

2。一个组织内部实现不同的权限控制

Fabric CA/数字证书管理
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 实现不同部门的权限控制,数据同步仍然会限制在不同部门内。
Fabric CA/数字证书管理

3。不同类型的节点分别使用不同的 MSP

需求:客户端、Peer 节点、排序服务节点分别设置不同的 MSP(身份信息包含 MSP 标识,可确定身份)

目的:验证背书的确是由 peer 节点签名而不是客户端/Orderer 服务节点签名

问题 1:

不同节点类型分别设置不同 MSP,对应的可信中间 CA 证书也不一样;

在通道设置时,需要包含不同的 MSP 及其可信中间 CA 证书,组织内的不同 MSP 成员才可访问通道里的数据。

同时,背书策略可指定只有 peer 节点对应的 MSP 成员背书的交易才有效。(目的:实现只能是 peer 节点才能背书签名)

同一个组织按不同节点类型设置 MSP 后,Peer 节点都有相同 MSP,Peer 节点间数据同步不会受影响,但会影响 Peer 节点&客户端交互.

Fabric CA/数字证书管理
在 peer 节点上,某些系统链码调用是和本地 MSP 相关的。

如:只执行本地 MSP 配置的由管理员发起的安装链码(install)请求/加入通道(Joinchain)请求等

应用程序执行这类系统调用时还需用到 peer 节点相同的 MSP 管理员签名密钥和证书

若不把这类系统调用功能放在应用程序中实现,正常的背书请求响应是没有问题的,因为 peer 节点接收背书请求检查的是有没有通道的写权限。
Fabric CA/数字证书管理

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

Fabric CA/数字证书管理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/数字证书管理
与 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/数字证书管理

二。Fabric CA 服务端安装部署

(一)准备工作

1。安装 GO 语言 1.9 以上版本

Fabric CA/数字证书管理
//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
Fabric CA/数字证书管理

2。设置 GOPATH 环境变量

Fabric CA/数字证书管理
//编辑文件
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 表示成功
Fabric CA/数字证书管理

3。确认 libtool 和 libtdhl-dev 已安装

//安装 libtool & libtdhl-dev

apt install libtool libltdl-dev

(二)安装 Fabric CA 服务端和客户端

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 服务

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。路径可自定义。
Fabric CA/数字证书管理

Fabric CA/数字证书管理Fabric CA/数字证书管理

openssl 查看证书细节

//打印出证书的内容:
openssl x509 -in ca-cert.pem -noout -text

Fabric CA/数字证书管理Fabric CA/数字证书管理

方法二:通过 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

Fabric CA/数字证书管理Fabric CA/数字证书管理

Fabric CA/数字证书管理
//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 的镜像
Fabric CA/数字证书管理

方法三:通过源码编译生成 Docker 镜像,以启动 Fabric CA 服务

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/数字证书管理

(四)fabric-ca-server 命令行选项

$ fabric-ca-server

$ fabric-ca-server --help
Fabric CA/数字证书管理 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】的数据存储配置:

Fabric CA/数字证书管理Fabric CA/数字证书管理

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 访问。

Fabric CA/数字证书管理
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 数据库之间建立安全的连接
Fabric CA/数字证书管理

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 客户端命令行选项

fabric-ca-client
Fabric CA/数字证书管理 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。

Fabric CA/数字证书管理Fabric CA/数字证书管理

Fabric CA/数字证书管理
//设置获取注册证书存储目录的环境变量
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 子目录中。
Fabric CA/数字证书管理

Fabric CA/数字证书管理Fabric CA/数字证书管理

 (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

Fabric CA/数字证书管理
//登记员是 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 属性及其值会添加到用户注册证书中,从而用来实现访问控制
//命令动行后会打印注册密码,用户注册时需要该注册密码
Fabric CA/数字证书管理

Fabric CA/数字证书管理Fabric CA/数字证书管理

修改:增加 type

Fabric CA/数字证书管理Fabric CA/数字证书管理

说明:

在登记用户时可使用“-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 客户端配置文件:

Fabric CA/数字证书管理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

Fabric CA/数字证书管理

(4)。Peer 节点的注册

通过命令行在“Fabric CA 服务端登记了 Peer 节点”后,可以通过登记的“用户名和注册密码”获取注册证书。

Fabric CA/数字证书管理
//设置环境变量 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
Fabric CA/数字证书管理

Orderer 节点注册同上。只需要将对应的 MSP 目录路径修改为 orderer 对应的 msp 目录即可。

Fabric CA/数字证书管理Fabric CA/数字证书管理

上述目录:

cacerts:存储可信的 CA 根证书  /  signcerts 为 ca 验证签名的证书  / keystore

(5)。重新获取用户的注册证书

若注册证书将要过期/私钥泄露,则可调用 reenroll 命令重新申请新的注册证书

//设置环境变量 peer1 目录位置
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1

//重新获取用户注册证书
fabric-ca-client reenroll

Fabric CA/数字证书管理Fabric CA/数字证书管理

(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

Fabric CA/数字证书管理

也可用 API 和序列号注销:–未测试成功

Fabric CA/数字证书管理
//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
Fabric CA/数字证书管理

(7)。获取 CA 证书链

msp/cacerts 目录:存储的是可信的 CA 根证书

//从 fabric ca 服务器获取根 CA 证书
fabric-ca-client getcacert

Fabric CA/数字证书管理Fabric CA/数字证书管理

【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

Fabric CA/数字证书管理Fabric CA/数字证书管理

【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

Fabric CA/数字证书管理 Fabric CA/数字证书管理

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

HashiCorp Vault:私密信息管理利器  ##用于生成私钥/导入/导出/加解密/签名/验签

Fabric CA/数字证书管理


露水湾 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Fabric CA/数字证书管理
喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址