Fabric中的安全机制(三)

今天我们来具体说一下Fabric中的CA。

Fabric CA 架构的组成

Fabric CA 实现了一整套PKI公钥基础设施,可以用来生成MSP中所需的全部证书,其主要功能是对MSP中的 成员身份证书 进行管理,包括生成、签名、撤销等功能。

需要注意的是,一旦MSP成员的证书被部署,该成员就可以访问Fabric网络中的各项资源,而不需要进行重复的申请,因此,Fabric CA 是不会对系统的性能造成任何影响的。

Fabric CA 是属于典型的CS架构,第一部分是Fabric CA Server,它是一个提供REST API接口的Server,默认监听在7054端口;另一个部分是Fabric CA Client,客户端包括命令行工具以及Fabric CA SDK开发包,我们可以看到,无论是服务器端,还是客户端,它都是通过REST API进行的。前者实现的是以命令行的形式操作CA证书,后者是以编程方式操作CA证书。
Fabric CA Server可以将生成的证书的属性信息写入到关系数据库或者LDAP目录服务器中,在Fabric CA Server服务器中,默认使用的是关系型数据库SQLite。而且,Fabric CA Server还可以实现高可用的集群模式,例如是用HA-Proxy的负载均衡代理软件实现对集群方式的部署,这样一来,集群中的所有服务器都可以共享相同的数据库。
为了安全起见,CA机构大多会采用根证书+中间证书的根证书链的实现方案。这样一来,多级中间证书可以在很大程度上降低根证书的管理负担,如果中间证书的私钥泄露或者过期,只需要讲这个中间证书吊销并给用户颁发新的证书即可。但无论如何,一定要保证Root CA生成环境的安全性,确保这一私钥不会被泄露。

Fabric CA 安装及功能

关于Fabric CA Server的配置信息,我们可以通过fabric-ca-server-config.yaml进行配置以及相关信息的查询。
首先关于初始管理员admin的信息如下:

# Contains identity information which is used when LDAP is disabled
  identities:
     - name: admin
       pass: adminpw
       type: client
       affiliation: ""
       attrs:
          hf.Registrar.Roles: "client,user,peer,validator,auditor,ca"
          hf.Registrar.DelegateRoles: "client,user,validator,auditor"
          hf.Revoker: true
          hf.IntermediateCA: true

其中hf.Registrar.Roles部分的属性定义客户端可以注册的证书类型。

接下里是用于签名证书的CA根证书的配置信息:

ca:
  # Name of this CA
  name:
  certfile: ca.crt
  keyfile: ca.key
  # Chain file (default: chain-cert.pem)
  chainfile: ca-chain.pem

最后一个属性定义了被CA根证书所信任的证书,如果配置好最后一个属性,那么它与CA根证书certfile一起形成证书链。

下一个是CSR(证书签名请求)部分的定义:

csr:
   cn: fabric-ca-server
   names:
      - C: US
        ST: "North Carolina"
        L:
        O: Hyperledger
        OU: Fabric
   hosts:
     - 2008f00aff38
   ca:
      pathlen:
      pathlenzero:
      expiry:

如果在生成CSR的时候没有提供相应的属性,那么就会使用上述默认值。

证书签名也有一些相关默认的属性,其中最重要的是证书的有效期:

signing:
    profiles:
      ca:
         usage:
           - cert sign
         expiry: 8000h
         caconstraint:
           isca: true
    default:
      usage:
        - cert sign
      expiry: 8000h

关于生成证书使用的椭圆加密算法,以及其密码强度:

bccsp:
    default: SW
    sw:
        hash: SHA2
        security: 256
        filekeystore:
            # The directory used for the software file-based keystore
            keystore: /var/hyperledger/fabric-ca-server/keystore

有关存储数据库的定义:

db:
  type: sqlite3
  datasource: /var/hyperledger/fabric-ca-server/state.db
  tls:
      enabled: false
      certfiles:
        - db-server-cert.pem
      client:
        certfile: db-client-cert.pem
        keyfile: db-client-key.pem

你可能感兴趣的:(Fabric中的安全机制(三))