[Introducción a Hyperledger Fabric] (2) Servidor de cuentas de Fabric: Fabric-ca

El proyecto Fabric-ca es un proyecto de código abierto lanzado específicamente para resolver el problema de la cuenta de Fabric, que resuelve perfectamente el problema de la generación de cuentas de Fabric. Consta de dos módulos, Fabric-ca-server y Fabric-ca-client. Fabric-ca-server juega un papel muy importante en el proyecto Fabric-ca.

1. Compilación e instalación de Fabric-ca

Paso 1: instale el paquete de componentes del sistema

sudo apt-get install libtool libltdl-dev

Paso 2: descarga el código fuente y compila

cd $GOPATH/src/github.com/hyperledger/

git clone http://gerrit.hyperledger.org/r/fabric-ca

cd fabric-ca/

#编译server和client
make fabric-ca-server 
make fabric-ca-client 

Paso 3: instale el archivo ejecutable compilado

cd $GOPATH/github.com/hyperledger/fabric-ca/bin/
cp $GOPATH/github.com/hyperledger/fabric-ca/bin/* /usr/local/bin/

Paso 4: compruebe si la instalación se ha realizado correctamente

fabric-ca-server version
fabric-ca-client version

2. Inicio y configuración de Fabric-ca-server

Una vez que se inicia fabric-ca-server, existe como un proceso demonio y las solicitudes se pueden iniciar a través de fabric-ca-client u otros clientes que implementen el protocolo de comunicación. Hay tres formas de establecer la información de configuración en faric-ca-server, que son parámetros de inicio, variables de entorno y archivos de configuración.

1. Opciones de línea de comandos de Fabric-ca-server

El módulo fabric-ca-server tiene tres subcomandos, a saber:

  • init: inicializa el servidor fabric-ca
  • start: inicia el servidor fabric-ca
  • versión: versión de visualización

2. Opciones de fabric-ca-server

Inserte la descripción de la imagen aquí

3. Inicialización de fabric-ca-server

Fabric-ca-server se puede parametrizar a través de archivos de configuración. Ejecute el subcomando init de fabric-ca-server para inicializar y generar archivos de configuración relacionados. Antes de ejecutar el comando init, debe crear carpetas relacionadas. Este artículo crea las siguientes carpetas (en realidad, puede especificar la ruta de la carpeta a voluntad):

mkdir -p  ~/go/src/github.com/hyperledger/fabric-ca-server

Inicialización del servidor de fabric-ca-server:

cd ~/go/src/github.com/hyperledger/fabric-ca-server
fabric-ca-server init -b admin:adminpw

Inserte la descripción de la imagen aquí
Una vez ejecutado el comando de inicialización fabric-ca-server, se generarán los archivos de configuración correspondientes en el directorio actual. Los nombres y funciones de estos archivos son los siguientes:

fabric-ca-server-config.yaml:配置文件
fabric-ca-server.db:数据库文件(数据库选择sqlite3时有效)
ca-cert.pem:证书文件
msp:私钥文件夹

4. Inicio de Fabric-ca-server

Después de editar el archivo de configuración, el comando de inicio es el siguiente:

fabric-ca-server start -H '/home/yulin/go/src/github.com/hyperledger/fabric-ca' --boot admin:adminpw

Inserte la descripción de la imagen aquí

Tres, el uso de Fabric-ca-client

fabric-ca-server proporciona un conjunto de interfaces RESTAPI para que las aplicaciones de terceros llamen. Fabric-ca-client encapsula estas interfaces RESTAPI y solo necesita establecer parámetros simples para completar el registro de la cuenta, la autorización de la cuenta y otras operaciones.

1. Subcomando del módulo Fabric-ca-client

  • inscribirse: registrar cuenta
  • gencrl: revocar certificado
  • gencsr: crear firma de certificado
  • getcacert: Obtener CA
  • volver a inscribirse: volver a registrar la cuenta
  • registrarse: registrar una nueva cuenta
  • revocar: revocar una cuenta
  • versión: muestra la información de la versión

2. Opciones de parámetros del módulo fabric-ca-client

El módulo fabric-ca-client es el mismo que el módulo fabric-ca-server. Todos los subcomandos comparten un conjunto de opciones globales. Los diferentes subcomandos requieren diferentes opciones. Las opciones del módulo fabric-ca-client y sus funciones son las siguientes:
(1) Comandos de gestión básicos

    --caname:  #CA服务器的名称
-H,--home:    #客户端的目录,用来存放客户端相关的文件,默认为"~/.fabric-ca-client"
-M, --mspdir:  #客户端的账号文件目录,默认为"msp"
-d, --debug:   #将客户端的日志设为debug模式
-u, --url:     #fabric-ca-server地址,默认为0.0.0.0:7054

(2) Pedidos relacionados con el registro de cuenta

--enrollment.attrs:     #账号登记请求中的属性
--enrollment.label:    #账号登记请求中HSM相关的标签
--enrollment.profile:  #登记请求中的profile

(3) Registro de cuenta

--id.affiliation:       #账号注册时组织部门信息
--id.attrs:             #账号注册时属性列表
--id.maxenrollments:    #当前注册后可以进行登记的次数,默认为-1
--id.name               #账号注册时的用户名
--id.secret             #账号注册时的密码
--id.type               #账号注册的类型,目前支持('peer,app,user'),默认值为"user"。

(4) Revocación del certificado

-a,--revoke.aki:        #注销证书时需要的公钥
-e,--revoke.name:       #注销证书时的实体名称
-r,--revoke.reason:     #注销原因
-s,--revoke.serial:     #注销证书的序列号

(5) Firma del certificado de CA

--csr.cn:               #CA证书请求时,请求报文中的通用名
--csr.hosts:            #CA签名请求时,请求报文中的主机名
--csr.names:            #CA签名请求时,请求报文中的附加名称
--csr.serialnumber:    #CA签名请求时,请求报文中的序列号
-m,--myhost:            #CA签名请求时,请求报文中请求主机名称,默认值是本地主机

(6) comunicación TLS

--tls.certfiles:        #TLS通信模式下的证书文件,PEM文件格式。
--tls.client.certfile:  #TLS通信模式下客户端的文件,PEM文件格式。
--tls.client.keyfile:   #TLS通信模式下客户端的私钥文件。

(7) Comandos de uso común
Registrar una cuenta

fabric-ca-client register --id.name peer2 --id.type peer --id.affiliation org1.department1 --id.secret peer2wd -u http://hocalhost:7054

Cargar información de la cuenta

fabric-ca-client enroll -u http://admin:adminpw@localhost:7054 -M '/home/yulin/go/src/github.com/hyperledger/fabric-client'

Obtenga el certificado del servidor CA

fabric-ca-client getcacert -u http://localhost:7054 -M ~/go/src/github.com/hyperledger/testuser/msp

Cuarto, integre fabric-ca-server en proyectos existentes

Fabric-ca es un poderoso complemento del módulo criptogénico de Fabric y juega un papel muy importante en proyectos reales. En el proyecto de tejido, el módulo criptogénico se usa generalmente para generar los archivos de cuenta de la organización, nodo de pares, nodo de pedido y otros módulos. Sin embargo, si el archivo de cuenta de usuario necesita ser generado dinámicamente en el proyecto, en este momento Fabric- ca puede proporcionar una mejor ayuda para hacer Fabric-ca Para generar dinámicamente cuentas de usuario para la organización especificada, es necesario vincular fabric-ca y organizaciones relacionadas.

1. Vincular fabric-ca-server a una organización existente

Aquí vinculamos fabric-ca-server al anterior [Introducción a Hyperledger Fabric] (1) Ejecute rápidamente una red Fabric simple 1 en org1.
Primero, abra el archivo de configuración fabric-ca-server fabric-ca-server-config.yaml y busque el siguiente contenido en el archivo de configuración:

ca:
  # Name of this CA
  name:
  # Key file (is only used to import a private key into BCCSP)
  keyfile:
  # Certificate file (default: ca-cert.pem)
  certfile:
  # Chain file
  chainfile:

Luego ingrese [Introducción a Hyperledger Fabric] (1) Ejecute rápidamente una red Fabric simple 1 para almacenar la carpeta del certificado relacionado con org1 y ejecute el árbol -L 2 para ver la información de la cuenta:

$ cd '/home/yulin/blockchain/fabric/Hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com' 

$ tree -L 2

Inserte la descripción de la imagen aquí
Modifique la configuración relevante en el archivo de configuración fabric-ca-server fabric-ca-server-config.yaml de la siguiente manera:

ca:
  # Name of this CA
  name: ca-org1
  # Key file (is only used to import a private key into BCCSP)
  keyfile: /home/yulin/blockchain/fabric/Hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/ca/priv_sk
  # Certificate file (default: ca-cert.pem)
  certfile: /home/yulin/blockchain/fabric/Hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem
  # Chain file
  chainfile: ca-chain.pem
  • keyfile: Corresponde al archivo con el sufijo de nombre de archivo _sk en la carpeta ca.
  • certfile: Corresponde al archivo llamado ca.org1.example.com-cert.pem en la carpeta ca.

A través de los pasos anteriores, fabric-ca-server está vinculado a la organización org1.

2. Genere una cuenta desde el fabric-ca-server vinculado a través del cliente.

Paso 1: Establecer las variables de entorno de Fabric-ca-client
Cree un directorio para almacenar archivos de cuentas de fabric-ca-client (msp).

mkdir ~/go/src/github.com/hyperledger/fabric-client

Una vez creado el directorio, regístrese con la cuenta de administrador y la contraseña para obtener el archivo entero de la cuenta de administrador (msp).

export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/hyperledger/fabric-client
fabric-ca-client enroll -u http://admin:adminpw@localhost:7054 -M ~/go/src/github.com/hyperledger/fabric-client

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Nota: es necesario iniciar fabric-ca-server.

Paso 2: Registre una cuenta
Después de que el administrador se registre, registre una cuenta con el nombre de usuario user_test y la contraseña user2wd. El comando es el siguiente:

$ fabric-ca-client register --id.name user_test --id.type user --id.affiliation org1.department1 --id.secret user2wd -u http://localhost:7054 -H ~/go/src/github.com/hyperledger/fabric-client
2021/03/28 15:26:26 [INFO] Configuration file location: /home/yulin/go/src/github.com/hyperledger/fabric-client/fabric-ca-client-config.yaml
Password: user2wd

Paso 3: Cargar
la cuenta Para cargar la cuenta user_test registrada en el paso anterior al local, primero debe crear un directorio local para almacenar el certificado de nuevo usuario descargado del servidor, el directorio puede ser cualquier directorio. El contenido de este artículo es el siguiente:

mkdir ~/go/src/github.com/hyperledger/testuser

Ingrese al directorio anterior, registre la cuenta user_test y guarde el archivo de la cuenta en el directorio especificado por -M.

$ fabric-ca-client enroll -u http://user_test:user2wd@localhost:7054 -M ~/go/src/github.com/hyperledger/fabric-client/testuser/msp
2021/03/28 15:31:33 [INFO] generating key: &{
    
    A:ecdsa S:256}
2021/03/28 15:31:33 [INFO] encoded CSR
2021/03/28 15:31:33 [INFO] Stored client certificate at /home/yulin/go/src/github.com/hyperledger/fabric-client/testuser/msp/signcerts/cert.pem
2021/03/28 15:31:33 [INFO] Stored root CA certificate at /home/yulin/go/src/github.com/hyperledger/fabric-client/testuser/msp/cacerts/localhost-7054.pem
2021/03/28 15:31:33 [INFO] Stored Issuer public key at /home/yulin/go/src/github.com/hyperledger/fabric-client/testuser/msp/IssuerPublicKey
2021/03/28 15:31:33 [INFO] Stored Issuer revocation public key at /home/yulin/go/src/github.com/hyperledger/fabric-client/testuser/msp/IssuerRevocationPublicKey

Inserte la descripción de la imagen aquí
Paso 4: Copie la firma del administrador y el archivo de certificado TLS público El
comando de copia es el siguiente:

$ cp /home/yulin/blockchain/fabric/Hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/signcerts/* /home/yulin/go/src/github.com/hyperledger/fabric-client/testuser/msp/admincerts
$ cp /home/yulin/blockchain/fabric/Hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/* /home/yulin/go/src/github.com/hyperledger/fabric-client/testuser/tls

Paso 5: Verifique la cuenta
Inserte la descripción de la imagen aquí
Al observar la estructura del archivo, se encuentra que el archivo de la cuenta generado por el módulo criptogénico es consistente, pero el nombre del archivo es diferente, esto es normal.

Supongo que te gusta

Origin blog.csdn.net/weixin_44029550/article/details/115280703
Recomendado
Clasificación