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源码
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对应关系

()一个组织对应多个MSP情况

1个组织有N个部门。

1个部门 >  MSP

1个peer节点 >  MSP

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

()多个组织对应一个MSP

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

N个组织 >  MSP (跨组织同步数据)

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

 组织 > N 部门,实现不同部门的权限控制

实现一:为该组织内的所有部门定义一个MSP

给peer节点配置MSP时,包含相同的:可信根CA证书列表、中间CA证书、管理员证书;不同的peer节点设置不同的所属部门(节点所属部门:利用证书和部门间映射的OrganizaionalUnitIdentifiers定义-msp/config.yaml)。

问题:数据还会在不同peer节点间同步。(因为:peer节点在识别组织身份类型OrgIdentityType时,获取的是MSP标识,它会认为通道内相同MSP的节点都可以分发数据)

实现二:给组织内的每个部门单独定义MSP

()为peer节点配置MSP时,不同部门配置的可信中间CA证书、管理员证书可以是不同的;不同部门成员的证书路径也是不同的。

解决问题:所有部门定义在同一个MSP中的问题

产生问题:增加管理上复杂度

()为每个部门设置不同的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查看证书细节

//打印出证书的内容:
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
Hyperledger Fabric Certificate Authority Server

Usage:
fabric-ca-server [command] Available Commands:
init Initialize the Fabric CA server
start Start the Fabric CA server Flags:
--address string Listening address of Fabric CA server (default "0.0.0.0")
-b, --boot string The user:pass for bootstrap admin which is required to build default config file
--ca.certfile string PEM-encoded CA certificate file (default "ca-cert.pem")
--ca.chainfile string PEM-encoded CA chain file (default "ca-chain.pem")
--ca.keyfile string PEM-encoded CA key file (default "ca-key.pem")
-n, --ca.name string Certificate Authority name
-c, --config string Configuration file (default "fabric-ca-server-config.yaml")
--csr.cn string The common name field of the certificate signing request to a parent Fabric CA server
--csr.hosts stringSlice A list of space-separated host names in a certificate signing request to a parent Fabric CA server
--csr.serialnumber string The serial number in a certificate signing request to a parent Fabric CA server
--db.datasource string Data source which is database specific (default "fabric-ca-server.db")
--db.tls.certfiles stringSlice PEM-encoded list of trusted certificate files
--db.tls.client.certfile string PEM-encoded certificate file when mutual authenticate is enabled
--db.tls.client.keyfile string PEM-encoded key file when mutual authentication is enabled
--db.type string Type of database; one of: sqlite3, postgres, mysql (default "sqlite3")
-d, --debug Enable debug level logging
--ldap.enabled Enable the LDAP client for authentication and attributes
--ldap.groupfilter string The LDAP group filter for a single affiliation group (default "(memberUid=%s)")
--ldap.url string LDAP client URL of form ldap://adminDN:adminPassword@host[:port]/base
--ldap.userfilter string The LDAP user filter to use when searching for users (default "(uid=%s)")
-p, --port int Listening port of Fabric CA server (default )
--registry.maxenrollments int Maximum number of enrollments; valid if LDAP not enabled
--tls.certfile string PEM-encoded TLS certificate file for server's listening port (default "ca-cert.pem")
--tls.clientauth.certfiles stringSlice PEM-encoded list of trusted certificate files
--tls.clientauth.type string Policy the server will follow for TLS Client Authentication. (default "noclientcert")
--tls.enabled Enable TLS on the listening port
--tls.keyfile string PEM-encoded TLS key for server's listening port (default "ca-key.pem")
-u, --url string URL of the parent Fabric CA server Use "fabric-ca-server [command] --help" for more information about a command. CA Server CMD

注:参数类型标记为“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:)/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= 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-client
Hyperledger Fabric Certificate Authority Client Usage:
fabric-ca-client [command] Available Commands:
enroll Enroll an identity
getcacert Get CA certificate chain
reenroll Reenroll an identity
register Register an identity
revoke Revoke an identity Flags:
-c, --config string Configuration file (default "$HOME/.fabric-ca-client/fabric-ca-client-config.yaml")
--csr.cn string The common name field of the certificate signing request
--csr.hosts stringSlice A list of space-separated host names in a certificate signing request
--csr.serialnumber string The serial number in a certificate signing request
-d, --debug Enable debug level logging
--enrollment.hosts string Comma-separated host list
--enrollment.label string Label to use in HSM operations
--enrollment.profile string Name of the signing profile to use in issuing the certificate
--id.affiliation string The identity's affiliation
--id.attr string Attributes associated with this identity (e.g. hf.Revoker=true)
--id.maxenrollments int The maximum number of times the secret can be reused to enroll
--id.name string Unique name of the identity
--id.secret string The enrollment secret for the identity being registered
--id.type string Type of identity being registered (e.g. 'peer, app, user')
-M, --mspdir string Membership Service Provider directory (default "msp")
-m, --myhost string Hostname to include in the certificate signing request during enrollment (default "$HOSTNAME")
--tls.certfiles stringSlice PEM-encoded list of trusted certificate files
--tls.client.certfile string PEM-encoded certificate file when mutual authenticate is enabled
--tls.client.keyfile string PEM-encoded key file when mutual authentication is enabled
-u, --url string URL of the Fabric CA server (default "http://localhost:7054") Use "fabric-ca-client [command] --help" for more information about a command. CA Client CMD

注:参数类型标记为“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 ) 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 -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

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

博客Fabric CA

Hyperledger CA

Fabric CA颁发数字证书

Fabric CA/数字证书管理的更多相关文章

  1. Fabric CA的部署与使用

    Fabric CA是Hyperledger Fbric的证书认证中心,提供以下功能:用户信息的登记与注册,数字证书的颁发与管理. 前言 之前使用CA服务一直是在docker容器中运行下载好的CA镜像, ...

  2. RSA数字证书管理

    RSA数字证书管理分为以下几个部分: 1:在存储区内创建数字证书: 2:导出数字证书私钥: 3:导出数字证书公钥: 4:导入数字证书; 5:读取数字证书. 1:在.net开发环境中,在证书存储区内创建 ...

  3. Fabric CA环境的集成

    我们前面关于Fabric的所有文章中用到的例子都没有CA Server,都是由cryptogen这个工具根据crypto-config.yaml而生成的.但是在实际生产环境中,我们肯定不能这么做,我们 ...

  4. (转)Fabric CA环境的集成

    PS:因为我部署的是集群(4peer+1order),需要为order,org1,org2分别建立一个CA,拿org1使用举例,获取org1根证书私钥名称:PRIVATE_KEY.sh #!/bin/ ...

  5. Hyperledger Fabric CA的命令行用法

    介绍Hyperledger Fabric CA的命令行方式简单用法 Hyperledger Fabric CA由server和client两部分组成. 设置两个环境变量 export FABRIC_C ...

  6. Hyperledger Fabric CA User’s Guide——配置设置(四)

    配置设置 Fabric CA提供了三种方案去配置Fabric CA服务端和客户端,优先顺序是: CLI flags(标识) 环境变量 配置文件 在本文档的其余部分中,我们将对配置文件进行更改.但是,可 ...

  7. Hyperledger Fabric CA User’s Guide——开始(三)

    Fabric CA User’s Guide——开始 先决条件 安装Go 1.9+ 设置正确的GOPATH环境变量 安装了libtool和libtdhl-dev包 下面是在Ubuntu上安装libto ...

  8. Hyperledger Fabric CA User’s Guide——概述(二)

    概述 下面的图表说明了如何将Hyperledger Fabric CA与总体的Hyperledger Fabric结构相匹配. 有两种方式与一种Hyperledger Fabric CA服务器进行交互 ...

  9. Hyperledger Fabric CA User’s Guide——CA用户指南(一)

    Fabric CA用户指南 Hyperledger Fabric CA是一种用于Hyperledger Fabric的认证机构(CA). 它提供了如下特性: 登记身份(注册ID),或者连接到作为用户注 ...

随机推荐

  1. linux资源管理命令之-----vmstat

    一.作用及语法: 命令用来显示Linux系统虚拟内存状态,也可以报告关于进程.内存.I/O等系统整体运行状态. vmstat [options] [delay [count]] 二.vmstat各字段 ...

  2. Android 在 4G 下访问 IPV6 慢的解决方案

    Android 在 4G 下访问 IPV6 慢的解决方案 Android4G ipv6 起因 今天,用户反馈 Android 端加载数据较慢,经 Android 开发人员排查后,发现在公司 wifi ...

  3. web性能优化--算法优化(四)

    避免for-in 把数组长度保存在局部变量中 较少迭代次数(Duffs Device) 基于函数的循环比基于循环的迭代消耗性能更多 优化if-else,一般switch比if-else速度快(hash ...

  4. Vue使用 weui picker 弹出框不消失

    前言 最近使用 weui 里面的 datepicker 组件的时候遇到了一个问题: 弹出来 选择年月日的框之后,直接点击导航上的“返回” 按钮,picker 选框不消失,也就是弹出框不消失 weui. ...

  5. scrapy五大核心组件和中间件以及UA池和代理池

    五大核心组件的工作流程 引擎(Scrapy) 用来处理整个系统的数据流处理, 触发事务(框架核心) 调度器(Scheduler) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. ...

  6. Java AtomicInteger类的使用方法详解_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 首先看两段代码,一段是Integer的,一段是AtomicInteger的,为以下: public class Samp ...

  7. jvm——metaspace代替永久代

    https://mp.weixin.qq.com/s?__biz=MzIzNjI1ODc2OA==&mid=2650886860&idx=1&sn=f8bc6ab03d7a07 ...

  8. java-dockerfile

    java环境dockefile FROM centos:7 MAINTAINER yon@taexa.com ENV JAVA_HOME /usr/local/jdk ENV JRE_HOME ${J ...

  9. 如何用 Redis 统计独立用户访问量

    众所周至,拼多多的待遇也是高的可怕,在挖人方面也是不遗余力,对于一些工作3年的开发,稍微优秀一点的,都给到30K的Offer,当然,拼多多加班也是出名的,一周上6天班是常态,每天工作时间基本都是超过1 ...

  10. 苹果手机上input的button按钮颜色显示问题

    在苹果手机上的input按钮自带效果,需要加上outline:0px; -webkit-appearance:none; 清除原有样式,同时苹果手机上的input按钮自带圆角需要按需要去掉 input ...