Fabric CA学习笔记

 

安装服务端与客户端

方式一:

安装服务端与客户端二进制命令到 $GOPATH/bin 目录下

go get -u github.com/hyperledger/fabric-ca/cmd/...

命令执行完成后,会自动在 $GOPATH/bin 目录下产生两个可执行文件:

  • fabric-ca-client
  • fabric-ca-server

设置环境变量,以便于在任何路径下都可以直接使用两个命令:

export PATH=$PATH:$GOPATH/bin

 

方式二:

除了如上方式外,还可以在 fabric-ca 目录下生成 fabric-ca-client、fabric-ca-server 两个可执行文件,方法如下:

切换至源码目录下:

cd $GOPATH/src/github.com/hyperledger/fabric-ca/

 使用make命令编译:

make clean
make fabric-ca-server
make fabric-ca-client

自动在当前的 fabric-ca 目录下生成 bin 目录, 目录中包含 fabric-ca-client 与 fabric-ca-server 两个可执行文件。

添加环境变量:

export PATH=$GOPATH/src/github.com/hyperledger/fabric-ca/bin:$PATH

 

启动

现在使用一个当前所在的目录作为服务器端的主目录,返回至用户的HOME目录下,创建一个 fabric-ca 目录并进入该目录

cd ~

mkdir fabric-ca

cd fabric-ca

 创建该目录的目的是作为Fabric CA 服务器的主目录。默认服务器主目录为 "./"。

 

初始化Fabric CA服务端

fabric-ca-server init -b admin:adminpw

在初始化时 -b 选项是必需的,用于指定注册用户的用户名与密码。

命令执行后会自动生成配置文件到当前目录:

ca-cert.pem  # PEM 格式的CA证书,自签名

fabric-ca-server-config.yaml  #默认配置文件

fabric-ca-server.db  # 存放数据的sqlite3数据库
 
IssuerPublicKey   

IssuerRevocationPublicKey  

msp  #/keystore/ : 路径下存放个人身份的私钥文件(_sk文件),对应签名证书

Fabric CA学习笔记_第1张图片

 

快速启动

快速启动并初始化一个 fabric-ca-server 服务

fabric-ca-server start -b admin:adminpw

-b :提供注册用户的名称与密码,如果没有使用LDAP,这个选项为必需。默认的配置文件是:fabric-ca-server-config.yaml

如果之前没有执行初始化命令,则启动过程中会自动初始化操作,即主从配置目录搜索相关证书和配置文件,如果不存在则自动生成。

 

 

Fabric CA 客户端命令

fabric-ca-client 命令可以与服务端进行交互, 包括五个子命令:

  • enroll:注册获取ECert
  • register:登记用户
  • getcainfo:获取CA服务的证书链
  • reenroll:重新注册
  • revoke:撤销签发的证书身份
  • version:Fabric CA 客户端版本信息

这些命令在执行时都是通过服务端的 RESTful 接口来进行操作的。

注册用户

打开一个新的终端,首先,设置 fabric-ca-client 所在路径,然后设置 Fabric CA 客户端主目录。通过调用在 7054 端口运行的 Fabric CA 服务器来注册 ID 为 admin 且密码为 adminpw 的标识。

export PATH=$PATH:$GOPATH/bin

export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin

fabric-ca-client enroll -u http://admin:pass@localhost:7054

参数解释:

  • -u:进行连接的 fabric-ca-server 服务地址。

enroll 命令访问指定的 Fabric CA 服务,采用 admin 用户进行注册。 在 Fabric CA 客户端主目录下创建配置文件 fabric-ca-clien-config.yaml  msp 子目录,存储注册证书(ECert),相应的私钥和 CA 证书链 PEM 文件。我们可以在终端输出中看到指示 PEM 文件存储位置的相关信息。

$ tree fabric-ca/clients/
fabric-ca/clients/
└── admin
    ├── fabric-ca-client-config.yaml
    └── msp
        ├── cacerts
        │   └── localhost-7054.pem
        ├── IssuerPublicKey
        ├── IssuerRevocationPublicKey
        ├── keystore
        │   └── 470b08c994479e805fe60460fbe93576ab0a5f0a457507c64bd9026e3b2a07e6_sk
        ├── signcerts
        │   └── cert.pem
        └── user

6 directories, 6 files

 

登记用户

如下命令,使用管理员标识的凭据注登记 ID 为 “admin2” 的新用户,从属关系为 “org1.department1”,名为 “hf.Revoker” 的属性值为 “true”,以及属性名为 “admin”的值为 “true”。“:ecert” 后缀表示默认情况下,“admin” 属性及其值将插入用户的注册证书中,实现访问控制决策。

$ export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
$ fabric-ca-client register --id.name admin2 --id.affiliation org1.department1 --id.attrs 'hf.Revoker=true,admin=true:ecert'

输出结果:

2020/05/31 20:33:12 [INFO] Configuration file location: /root/fabric-ca/clients/admin/fabric-ca-client-config.yaml
Password: QSCPIVWxsRMp

命令执行成功后返回该新登记用户的密码

如果想使用指定的密码, 在命令中添加选项 --id.secret password 即可

 

登记注册节点

登记Peer或Orderer节点的操作与登记用户身份类似;可以通过 -M 指定本地 MSP 的根路径来在其下存放证书文件

下面我们登记一个名为 peer1 的节点,登记时指定密码(非服务器为生成)。

登记节点操作:

$ 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

注册节点操作:

$ export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1
$ fabric-ca-client enroll -u http://peer1:peer1pw@localhost:7054 -M $FABRIC_CA_CLIENT_HOME/msp

-M: 指定生成证书存放目录 MSP 的路径, 默认为 "msp"

命令执行成功后会在 $FABRIC_CA_CLIENT_HOME 目录下生成指定的 msp 目录, 在此目录下生成 msp 的私钥和证书。

 

其他的一些命令

getcainfo

通常,MSP 目录的 cacerts 目录必须包含其他证书颁发机构的证书颁发机构链,代表 Peer 的所有信任根。

以下内容将在 localhost上启动第二个 Fabric CA 服务器,侦听端口 7055,名称为 “CA2”。这代表完全独立的信任根,并由区块链上的其他成员管理。

$ export PATH=$PATH:$GOPATH/bin
$ export FABRIC_CA_SERVER_HOME=$HOME/ca2
$ fabric-ca-server start -b admin:ca2pw -p 7055 -n CA2

打开一个新终端,使用如下命令将CA2的证书链安装到peer1的MSP目录中:

$ export PATH=$PATH:$GOPATH/bin
$ export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1
$ fabric-ca-client getcainfo -u http://localhost:7055 -M $FABRIC_CA_CLIENT_HOME/msp

 

reenroll命令

如果注册证书即将过期或已被盗用。可以使用 reenroll 命令以重新生成新的签名证书材料

$ export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1
$ fabric-ca-client reenroll

 

查看AKI和序列号

AKI: 公钥标识号, 代表了对该证书进行签发机构的身份

查看根证书的AKI与序列号信息:

openssl x509 -in $FABRIC_CA_CLIENT_HOME/msp/signcerts/cert.pem -text -noout

输出结果:

$ openssl x509 -in $FABRIC_CA_CLIENT_HOME/msp/signcerts/cert.pem -text -noout

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:  #序列号
            5a:eb:29:c1:7c:5a:39:7a:35:bf:83:5d:46:9c:18:55:8a:16:7f:97
    Signature Algorithm: ecdsa-with-SHA256
        Issuer: C=US, ST=North Carolina, O=Hyperledger, OU=Fabric, CN=fabric-ca-server
        Validity
            Not Before: May 31 12:33:00 2020 GMT
            Not After : May 31 12:38:00 2021 GMT
        Subject: C=US, ST=North Carolina, O=Hyperledger, OU=peer, OU=org1, OU=department1, CN=peer1
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:65:fd:6e:5a:d6:3d:6d:47:ff:40:01:92:cb:e7:
                    2c:11:e2:0e:aa:f3:e7:4c:c0:34:74:5e:58:81:c4:
                    af:bf:72:74:52:f7:48:73:1d:f7:1f:68:56:ed:1f:
                    b0:89:35:6b:97:e2:66:90:f2:a0:f6:dd:fc:8f:11:
                    69:c6:97:ac:92
                ASN1 OID: prime256v1
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier:
                4E:D3:AD:1B:55:E5:A8:52:DA:E7:63:EA:2E:33:98:5A:13:CB:7B:8D
            X509v3 Authority Key Identifier: #keyid: 后面的就是AKI
                keyid:A2:2D:07:F8:75:FA:D0:CF:88:5D:1F:7B:52:DE:23:1C:CB:95:AF:02

            X509v3 Subject Alternative Name:
                DNS:iZuf6gvstb7n8u0fxi5zkgZ
            1.2.3.4.5.6.7.8.1:
                {"attrs":{"hf.Affiliation":"org1.department1","hf.EnrollmentID":"peer1","hf.Type":"peer"}}
    Signature Algorithm: ecdsa-with-SHA256
         30:44:02:20:6f:d2:37:c9:92:32:cd:da:a3:2d:b0:d9:86:9b:
         dd:8c:a3:7d:1f:3c:5b:5d:8b:3d:18:d5:a3:ad:6b:97:57:6d:
         02:20:43:89:f1:df:b2:1b:38:d4:b2:0c:10:dd:8a:2a:5b:3b:
         aa:ff:12:ef:cc:cf:55:ea:92:dd:54:92:51:2a:c0:d8

单独获取AKI:

openssl x509 -in $FABRIC_CA_CLIENT_HOME/msp/signcerts/cert.pem -text -noout | awk '/keyid/ {gsub (/ *keyid:|:/,"",$1);print tolower($0)}'

输出:

a22d07f875fad0cf885d1f7b52de231ccb95af02

单独获取序列号:

openssl x509 -in $FABRIC_CA_CLIENT_HOME/msp/signcerts/cert.pem -serial -noout | cut -d "=" -f 2

输出结果:

5AEB29C17C5A397A35BF835D469C18558A167F97

 

你可能感兴趣的:(Fabric CA学习笔记)