Estoy tratando de configurar una instalación de Hyperledger Fabric con mi propia autoridad de certificación y usuario. Estoy usando versión 1.4.6 . Me estoy acercando. Pero esto es lo que sucede cuando intento crear un canal:

peer channel create -o orderer.diro.umontreal.ca:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/indepedent/orderer/msp/signcerts/cert.pem

En respuesta, obtengo:

Cannot run peer because error when setting up MSP of type bccsp from directory /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/indepedent/admin3/msp: CA Certificate did not have the CA attribute, (SN: 6143ea1883f7a36a3d794bfab314ea05d9ddd270)

admin3 es mi intento actual de registrar un administrador con la CA. Sin embargo, esto es lo que sucede cuando intento buscar dentro del certificado de CA para ese usuario:

openssl x509 -in crypto-config/indepedent/admin3/msp/cacerts/localhost-7054.pem -text -noout | grep CA:
            CA:TRUE, pathlen:0

Entonces parece tener el atributo CA después de todo. ¿Lo que da?

0
eje211 10 abr. 2020 a las 03:52

2 respuestas

La mejor respuesta

Verifique el certificado presente en la carpeta: crypto-config/indepedent/admin3/msp/tlscacerts y verifique si es un certificado de CA o no.

1
Chintan Rajvir 10 abr. 2020 a las 08:09

No pude hacer que todo funcionara, pero conseguí esa parte funcionando y no era obvio, así que lo estoy documentando aquí en caso de que ayude a alguien en el futuro:

Primero, haz la llave. No el certificado, solo la clave:

openssl ecparam -name prime256v1 -genkey -param_enc named_curve -out private-key.pem

El tipo prime de curvas elípticas parece ser el que funciona, y es importante que sean del tipo named_cure. Puedes cambiar el tamaño. Esa parte está en la documentación.

Luego haga el certificado:

openssl req -new -x509 -key private-key.pem -out tls-cert.pem -subj '/CN=Same name as original'  -days 10000 -addext "subjectAltName = DNS:localhost"

Ahora, cuando comencé la CA, no funcionó. Quería una clave privada. Dio un largo número hexadecimal para la clave privada. Copié la clave privada en el almacén de claves como un archivo llamado <long_number>_sk pero eso no fue suficiente. Ese archivo contiene dos secciones y la primera debe eliminarse. Así que tuve que entrar y eliminar las primeras tres líneas.

Eso funciono. Después de hacer eso, tenía mi certificado de CA que también funcionaba como un certificado TLS. Pero ahora, tengo que recrear a todos mis usuarios.

Intenté agregar un archivo de configuración con la opción -config, pero eso eliminó el atributo esencial CA:TRUE.

[EDITAR]

También logré hacer un archivo de configuración que funciona y hace lo mismo con un comando más corto:

[ req ]
distinguished_name     = req_distinguished_name
x509_extensions        = v3_intermediate_ca

[ v3_intermediate_ca ]
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints       = critical, CA:true, pathlen:0
keyUsage               = critical, digitalSignature, cRLSign, keyCertSign
subjectAltName         = @alt_names

[ req_distinguished_name ]
C                      = US
ST                     = CA
L                      = City
O                      = Institution
OU                     = Department
CN                     = main-ca

[ alt_names ]
DNS.0                  = CN localhost

Y entonces:

openssl req -new -x509 -key private-key.pem -out tls-cert.pem -subj '/CN=The Subject' -days 10000 -config openssl.cnf
0
eje211 12 abr. 2020 a las 20:19