Fabric v1.x CA简介

一、Fabric CA架构概述

Fabric CA主要功能有身份注册、签发ECert、证书续签和吊销等。下图说明了Fabric CA与Fabric总体架构之间关系:
在这里插入图片描述
Fabric CA是典型的CS架构,包括单独的client端和server端,可以通过Fabric-CA client或SDK与server端交互。
server端也可以扩展成HA模式,Fabric CA客户端或SDK可以连接到一个server集群中的服务器,客户端路由到一个HA代理,该代理将流量负载平衡到一个fabric-ca-server集群成员。
集群中所有的Fabric CA的服务器都共享相同的数据库,以跟踪身份和证书。如果配置了LDAP,则将标识信息保存在LDAP中而不是数据库中。
一个服务器可能包含多个CAs。每个CA要么是根CA,要么是中间CA。每个中间CA都有一个父CA,它要么是根CA,要么是另一个中间CA。

二、Fabric CA Server

Fabric CA提供了三种方案去配置Fabric CA服务端和客户端,config优先级是:

  1. 命令行 (CLI flags)
  2. 环境变量(Environment variables)
  3. 配置文件(Configuration file)

Fabric CA Server的命令包括:

参数命令名称 说明
start 启动
Init 初始化
version 查看版本号

Fabric CA Server的Flags包括:

Flag 说明
-b bootstrap identity
-n ca name
-u intermediate CA
-d debug
-H home directory

通过init命令启动Fabric CA Server,会产生一个server目录,包含的一些文件:

文件名 说明
ca-cert.pem root证书
ca-chain.pem intermediate证书链
tls-cert.pem tls证书
fabric-caserver.db 默认使用sqlite
fabric-ca-serverconfig.yaml 默认生成的配置文件,里面的参数通过命令行和环境变量设置
IssuerPublicKey 用于identity mixer
IssuerRevocationPublicKey 用于identity mixer
MSP

Intermedia CA:

  • 限制Root CA的暴露,Root CA的私钥如果泄露,将危及整个信任链,intermediate CA的私钥泄露只会影响单只,可以降低风险
  • 可以跨多个组织颁发证书,灵活性很强
  • intermediate CA需通过Root CA签发
  • Root CA和一组intermediate CA组成证书信任链

Root CA会给自己的证书签名得到根证书,然后给下一级的Intermedia CA签发得到中间根证书,每一级CA都可以对外签发证书,如下所示:
在这里插入图片描述

三、Fabric CA Client

Fabric CA Client的命令包括:

参数命令名称 说明
affiliation
affiliation
certificate
enroll 给identity生成MSP
gencrl
gencsr
getcainfo
identity
reenroll
register 注册用户,可以指定id.name(名字)、id.affiliation(组织结构)、id.type(4种类型 peer orderer client user)、id.attrs(见ABAC)、id.maxenrollments(错误登录最大次数)
revoke 撤销用户
version

Fabric CA Client的一些Flags如下:

Flag
-u URL of fabric-ca-server
-d debug
-H home directory
-M MSP directory
e revoke.name

四、基于属性的访问控制(ABAC)

Fabric client在注册用户时,需要指定用户属性,用于作访问控制,即ABAC(Attribute-Based Access Control)。ABAC是通过chaincode做访问控制的分类和管理的。
register命令使用 'id.attrs’参数指定属性名字,enroll命令使用 'enrollment.attrs’指定属性,一些属性如下:
在这里插入图片描述

  • Ecert里会自带3个默认属性:hf.EnrollmentID、 hf.Type、hf.Affiliation
  • 如果需要定制属性,那么可以用’:ecert’给Ecert增加属性

五、证书签发请求(CSR)

需要提供CSR(certificate signing request)给证书颁发机构进行签发,才能得到一个合法的证书。CSR文件内容如下:

csr:
    cn: <<enrollment ID>>
    key:
        algo: ecdsa
        size: 256
    names:
       - C: US
        ST: North Carolina
        L:
        O: Hyperledger Fabric
        OU: Fabric CA
    hosts:
    - <<hostname of the fabric-ca-client>>
    ca:
        pathlen:
        pathlenzero:
        expiry:

上文中的“enrollment ID”为register的用户名。

六、idendity的生命周期

可以使用fabric-ca-client SDK进行identity生命周期管理,主要的生命周期包括Register、Modify、Enroll、ReEnroll、Revoke五个过程,如下所示:

  1. Register
    第一步必须先注册新用户,命令示例如下:
fabric-ca-client register -d --id.name demouser --id.affiliation org1.department1 --id.type peer --maxenrollments -1 --id.attrs '"hf.Registrar.Roles=peer,user",hf.Revoker=true:ecert' -u <fabric-ca-server>:<port>
  1. Modify
  2. Enroll
    注册用户以获取由CA签名的注册证书,命令示例如下:
fabric-ca-client enroll -u https://demouser:HSrcxfuFcoDg@<fabric-ca-server>:<port> -H <msp directory>--caname <cn.name>
  1. ReEnroll 证书被破坏或需要更新的时候
  2. Revoke 撤销现有用户或撤销特定证书(属性hf.Revoker为true的用户才有权限进行revoke)

可以使用fabric-ca-client SDK进行生命周期管理,主要有4个功能可以通过SDK进行操作,如下:
在这里插入图片描述

发布了38 篇原创文章 · 获赞 3 · 访问量 6931

猜你喜欢

转载自blog.csdn.net/ice_fire_x/article/details/104473970