fabric-ca-client的使用

fabric-ca-client的使用

设置FABRIC_CA_CLIENT_HOME环境变量

这个环境变量指向fabric-ca-client的工作目录,配置文件应该放在这个目录下。

export FABRIC_CA_CLIENT_HOME=/path/to/fabric-ca-client-home

生成默认配置文件(登录一个已有账户)

如果你运行fabric-ca-client enroll命令时添加-d参数,fabric-ca-client会在$FABRIC_CA_CLIENT_HOME目录下生成一个默认的fabric-ca-client-config.yaml文件。这个文件随后可以被编辑以满足特定需求。注意这个命令要fabric-ca-server启动

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

这个命令会使用默认的管理员凭据对CA进行登记,并在$FABRIC_CA_CLIENT_HOME下生成默认配置文件和MSP目录。

在这里插入图片描述

  1. 准备登记请求fabric-ca-client首先根据命令行参数和fabric-ca-client-config.yaml配置文件(如果存在)准备登记请求。这包括身份信息(如用户名和密码)、证书签名请求(CSR)信息等。
  2. 建立连接fabric-ca-client然后使用指定的URL(在这个例子中是http://localhost:7054)与Fabric CA服务器建立连接。如果配置了TLS(在生产环境中推荐),这个过程还包括TLS握手过程。
  3. 发送登记请求:通过建立的连接,fabric-ca-client发送登记请求到服务器。这个请求包括用户的身份信息(通过URL中的admin:adminpw指定)和CSR。身份信息用于认证请求者的身份,而CSR(证书签名请求)包含了公钥和证书主题等信息,CA服务器将使用这些信息生成新的证书。
  4. 处理CA响应:Fabric CA服务器验证请求者的身份,并处理CSR。如果认证成功并且请求被批准,CA会使用自己的私钥对CSR中的公钥进行签名,生成新的证书。然后,CA将新证书和CA链(如果配置了)发送回客户端。
  5. 保存证书和密钥fabric-ca-client接收到来自CA的响应后,会在本地存储新颁发的证书和与CSR对应的私钥。默认情况下,这些文件被存储在$FABRIC_CA_CLIENT_HOME/msp目录下,具体包括:
    • keystore/:存放私钥。
    • signcerts/:存放由CA签名的证书。
    • cacerts/:存放CA的根证书。
  6. 完成登记过程:至此,登记过程完成。拥有了这些证书和私钥,用户(或节点)就可以作为网络的认证成员进行交互了。

添加-d参数的作用是启用调试模式,这将输出更多的信息到控制台,帮助诊断问题或了解fabric-ca-client的内部工作流程。

注册新用户

前提条件

  • 确保你已经有一个运行中的Fabric CA服务器。
  • 确保你已经拥有或者知道一个具有注册权限的管理员身份的凭据。在Fabric CA服务器初始化时,通常会创建一个默认管理员用户。

步骤1: 管理员登记

在注册新用户之前,管理员需要先登记自己以获得管理员证书。如果管理员已经登记过了,可以跳过这一步。

管理员的用户名和密码分别是adminadminpw,并且Fabric CA服务器地址为http://localhost:7054

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

步骤2: 注册新用户

使用管理员身份注册新用户。你需要指定新用户的唯一--id.name,以及为用户分配的--id.secret(密码)。此外,你还可以指定用户的类型(--id.type)等其他属性。

例如,注册一个名为peerUser,密码为peerUserpw的peer节点用户:

fabric-ca-client register --id.name peerUser --id.secret peerUserpw --id.type peer

步骤3: 为peer节点用户登记证书

注册成功后,你可以为peerUser进行登记,以获取其证书和私钥。

fabric-ca-client enroll -u http://peerUser:peerUserpw@localhost:7054 -M /path/to/peerUser/msp
fabric-ca-client enroll -u http://peerUser:peerUserpw@localhost:7054 -M /home/hyh/gopath/src/github.com/hyperledger/bin/fabric-ca-client-home/peerUser/msp

这个命令将使用peer节点用户的凭据向CA服务器请求证书,获取的证书和私钥将被存储在指定的MSP目录中。这些证书和密钥对于节点的身份认证和安全通信至关重要。

命令结果:

root@localhost /home/hyh/gopath/src/github.com/hyperledger/bin/fabric-ca-client-home]# fabric-ca-client enroll -u http://peerUser:peerUserpw@localhost:7054 -M /home/hyh/gopath/src/github.com/hyperledger/bin/fabric-ca-client-home/peerUser/msp
2024/03/24 06:23:10 [INFO] generating key: &{A:ecdsa S:256}
2024/03/24 06:23:10 [INFO] encoded CSR
2024/03/24 06:23:11 [INFO] Stored client certificate at /home/hyh/gopath/src/github.com/hyperledger/bin/fabric-ca-client-home/signcerts/cert.pem
2024/03/24 06:23:11 [INFO] Stored root CA certificate at /home/hyh/gopath/src/github.com/hyperledger/bin/fabric-ca-client-home/cacerts/localhost-7054.pem
2024/03/24 06:23:11 [INFO] Stored Issuer public key at /home/hyh/gopath/src/github.com/hyperledger/bin/fabric-ca-client-home/IssuerPublicKey
2024/03/24 06:23:11 [INFO] Stored Issuer revocation public key at /home/hyh/gopath/src/github.com/hyperledger/bin/fabric-ca-client-home/IssuerRevocationPublicKey

额外的配置:TLS证书

对于peer节点,你还可能需要为其获取TLS证书,用于安全的传输层通信。可以通过指定--enrollment.profile参数为tls来登记TLS证书:

fabric-ca-client enroll -u http://peerUser:peerUserpw@localhost:7054 -M /path/to/peerUser/tls --enrollment.profile tls
fabric-ca-client enroll -u http://peerUser:peerUserpw@localhost:7054 -M /home/hyh/gopath/src/github.com/hyperledger/bin/fabric-ca-client-home/peerUser/tls --enrollment.profile tls

这将为peerUser获取TLS证书和密钥,通常会存储在节点的tls目录中。

当使用fabric-ca-client enroll命令登录(也就是登记)账户后,fabric-ca-client会在本地生成一系列文件,这些文件构成了登记账户的成员服务提供者(Membership Service Provider,MSP)目录。这个MSP目录包含了证书和密钥,这些是Fabric网络中身份认证和交易签名的基础。默认情况下,这些文件被保存在$FABRIC_CA_CLIENT_HOME/msp目录下,但也可以通过命令中的-M选项指定其他路径。

以下是登记过程后生成的主要文件和目录:

1. keystore

  • 目录路径msp/keystore/
  • 内容:包含登记用户的私钥文件。这个私钥用于签署交易和证书请求。
  • 文件示例:文件名通常是一串数字和字母,例如fd471b62f29a..._sk

2. signcerts

  • 目录路径msp/signcerts/
  • 内容:包含用户的签名证书。这个证书包含了用户的公钥和身份信息,由Fabric CA签发,并且可以被网络中其他参与者验证。
  • 文件示例:通常命名为cert.pem

3. cacerts

  • 目录路径msp/cacerts/
  • 内容:包含一个或多个Fabric CA的根证书。这些证书用于验证签名证书链的顶端。
  • 文件示例:通常包含CA的端口号,如localhost-7054.pem

4. tlscacerts (如果使用TLS)

  • 目录路径msp/tlscacerts/
  • 内容:如果在登记时指定了TLS参数,这个目录将包含TLS CA的根证书,用于TLS连接的加密。
  • 文件示例:与cacerts类似,文件名通常包含CA的端口号。

5. admincerts (可选,根据具体配置决定)

  • 目录路径msp/admincerts/
  • 内容:包含管理员的证书。在某些场景中,需要将用户的签名证书复制到这个目录来赋予管理员权限。
  • 文件示例:通常命名为Admin@org1.example.com-cert.pem

步骤4: 配置peer节点使用登记的证书和密钥

为了让peer节点作为peerUser登录,你需要配置peer节点使用步骤1中获得的MSP证书和密钥。这通常涉及到编辑peer节点的配置文件(如core.yaml)或通过环境变量指定证书和密钥的路径。

具体来说,你需要更新以下配置项:

  • MSP配置:指定peer节点使用的MSP目录。这告诉节点在哪里可以找到其身份证书和私钥。
mspConfigPath: /path/to/peerUser/msp

TLS配置(如果启用):如果你的网络启用了TLS,还需要指定TLS证书和密钥的路径,以及Fabric CA服务器的根证书路径。这些信息通常在core.yaml文件的tls部分配置,或者作为环境变量提供。

tls:
  enabled: true
  clientAuthRequired: true
  cert:
    file: /path/to/peerUser/tls/signcerts/cert.pem
  key:
    file: /path/to/peerUser/tls/keystore/key.pem
  rootcert:
    file: /path/to/peerUser/tls/cacerts/ca-cert.pem

  • 26
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值