Últimas entradas

Fabric CA Server API de una red Hyperledger Fabric

Hyperledger Fabric CA Server es una Autoridad de certificación (CA) para Hyperledger Fabric, proporciona características como:

  • Registro de identidades, conexión a LDAP para el registro de usuarios,
  • Emisión de certificados de inscripción (ECerts), y
  • Renovación y revocación de certificados

En el siguiente diagrama se muestra como el servidor de Fabric CA se adapta a la arquitectura general de Hyperledger Fabric.

Fuente: https://hyperledger-fabric-ca.readthedocs.io/en/release-1.4/users-guide.html

La API de Fabric CA Server proporciona servicios de autoridad de certificación para interactuar con la red blockchain, en este caso que presentaremos, Hyperledger Blockchain.

En los post Implementación de una red blockchain con Hyperledger Fabric y Despliegue de red blockchain con multiples nodos con Hyperledger Fabric se explica como iniciar una red blockchain con Hyperledger Fabric, donde se hace mención al servicio Fabric CA.

Se tomará como referencia los servicios desplegados en la red de multiples host, para ello se revisarán especificamente los de Fabric CA Server “ca_org1”, “ca_org2” y “ca_org3”

En la documentación de Fabric CA, se indica las reglas, especificaciones a través de un documento yaml para poder utilizar su API https://gist.github.com/jorgedison/cc0e26179d3582657b502907fa1a8e19, para ello usaremos swagger https://editor.swagger.io/

Probando la API

Para efectos de pruebas el servicio “ca_org1” utiliza el puerto 7054, así que se invocara de forma local desde el host 1 donde se encuentra desplegado, la variable tls.enabled esta establecida en modo true, por lo que las llamadas se realizaran vía https.

curl -X GET https://0.0.0.0:7054/api/v1/cainfo --insecure | jq 
{
  "result": {
    "CAName": "ca_org1",
    "CAChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXVENDQWYrZ0F3SUJBZ0lRVm9UL0F0L3ViMG1Zd0dyTVNqUDZaVEFLQmdncWhrak9QUVFEQWpCM01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RWJNQmtHQTFVRUNoTVNiM0puTVM1dGFXUnZiV2x1YVc4dVkyOXRNUjR3SEFZRFZRUURFeFZqCllTNXZjbWN4TG0xcFpHOXRhVzVwYnk1amIyMHdIaGNOTWpBd05qRXdNRE13T0RBd1doY05NekF3TmpBNE1ETXcKT0RBd1dqQjNNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RWJNQmtHQTFVRUNoTVNiM0puTVM1dGFXUnZiV2x1YVc4dVkyOXRNUjR3CkhBWURWUVFERXhWallTNXZjbWN4TG0xcFpHOXRhVzVwYnk1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak8KUFFNQkJ3TkNBQVJERnorTURvZnBhQ0NXVHdINFcxSm5FSHlBdUoyczZGN0VFZGs5NW9qWEdEaE5lR1ovMnhzTwpHdGxRc0pqbzZST3FPTndpL09WVnoycmM5ZFBTWDkvSm8yMHdhekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEClZSMGxCQll3RkFZSUt3WUJCUVVIQXdJR0NDc0dBUVVGQndNQk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWUQKVlIwT0JDSUVJTVpYZWxwbDUrK0hjaFdKTk4yUkpjc1FQaGlJV3RwRzY1YUZqMDJpd2NkZk1Bb0dDQ3FHU000OQpCQU1DQTBnQU1FVUNJUURjc0R3di9TaTdBZ0dSbEZxWnVDRWJPTDlYbllWRndrRW9xL1dYMjRCQ1BRSWdmNmhqCm8wY2lpYjFRaUFMc3lyT3BWNW94N3JTZEVaN2V0QzFNZnUvdG0rcz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=",
    "IssuerPublicKey": "CgJPVQoEUm9sZQoMRW5yb2xsbWVudElEChBSZXZvY2F0aW9uSGFuZGxlEkQKIO8QsNXaFPT/dFHMTtYrpLqGEErM9pQXTypMXCz7I4zmEiDq+qfXbYiI5omvovPrcU8kNHgdQPgXzDTwaRB65d57txpECiBONf1Jozwga+sqYgVyKZ1c1PMK0KNnQJf6TQZNG02CPBIgVc+6qkmWCxZ89CBw4PTcdSxWYDPVXYoFlNCOdV17VtgiRAogcEnbizDSOsZAy6nw1O2KoSzw7tGD0dyY2p8r/ttSuTsSIE1ygsE8JepFmGR23wjYcF1EQ3NF4Z7BPjse58dhB1TwIkQKICPpFp5lCKzQmbgpcdTskdYhOVpnJkQTbdwDlJHKi+73EiDdn/RSVdIWOzBQvYS3xWvFPaAGW6QJj+iCNMTuMh+avSJECiDKait/d5Mu32PS0V+DyHFlOnzG4XaZtQ/tb6I3mDFVsBIgh3zbbyY4dhC3g4jmZlUNwKByybiMxfHDMarqC5ISgdkiRAogLF3Auxg+/JKuAnDDkFGHzpHf5z0wisGW5aM5VkCL+LISIHRxI/O56GogzcR8Dph7/MIuM6GQh9bL46qpHDNZIzjdKogBCiC6+NRUEa0cZ7BMAjvXFvSI/F1+VevFyTTJW2BLHi1gBhIg40Sa1vaZ2GeBLFVgfb7yx1mDTRpzwt/Nl2rMSQaFel8aICaMFkVQ5XRABaJcNPilafK3wIXs9gq+BNku1AhOyb+HIiCD9bB0qWEvyXLG0Vx2y6Ow9xdFttVuzjf7BbSpewFJCTJECiDJ3HiicR1grhRPx7aim3GY6WjvdQyk7S/jZyDI6kfkkxIg0kgU46c3IrWALLbTcBwulzst0PNxh0GR9l7DmY+ALRQ6RAogKozFkK0d7DRl5xkgYEo3vArBMaEHFBUqn/LSbLXdGtASIOUNZHHD4bJYmaegYK2uk0gCA3IaDJ/ZnsZmU3w81ALcQiBST35h485xtHv9+TAZL2ugRGoLmPb+pCmWcCNZ3O+6wEogenjOTa0Xnlnn+Ubi6UdHa8m3unmDOnCoflPsQWafUZtSIN1xiwrSdSVb6klYQqMh+Ym5Urkrvq5f4z2uYrRUb9pb",
    "IssuerRevocationPublicKey": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUhZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNJRFlnQUVERXNseGtmY2R5OUFzdVo5ZE1STjJDb08yQlVEdWFNUQp5azYwNWhPTEdSSUpZRTlScW9UbVpqM0hGU2VWVU53eHk5NkhWTUw4aHVUZkxKUWlubDRoYzBtdEF4WDZHcDdqCk1CeXF3ODNITGtZY3Fid1BESmZvdG5ZMDBFTEV1UHpJCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo=",
    "Version": "1.4.7"
  },
  "errors": [],
  "messages": [],
  "success": true
}

Validación de la información del servicio Fabrica CA de la entidad certificadora del Host 2 y resultado de la respuesta.

curl -X GET https://0.0.0.0:8054/api/v1/cainfo --insecure | jq 
{
  "result": {
    "CAName": "ca_org2",
    "CAChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXVENDQWYrZ0F3SUJBZ0lRVFNKQ1IvTnZ3Ym9GU1p2WVhobFVMVEFLQmdncWhrak9QUVFEQWpCM01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RWJNQmtHQTFVRUNoTVNiM0puTWk1dGFXUnZiV2x1YVc4dVkyOXRNUjR3SEFZRFZRUURFeFZqCllTNXZjbWN5TG0xcFpHOXRhVzVwYnk1amIyMHdIaGNOTWpBd05qRXdNRE13T0RBd1doY05NekF3TmpBNE1ETXcKT0RBd1dqQjNNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RWJNQmtHQTFVRUNoTVNiM0puTWk1dGFXUnZiV2x1YVc4dVkyOXRNUjR3CkhBWURWUVFERXhWallTNXZjbWN5TG0xcFpHOXRhVzVwYnk1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak8KUFFNQkJ3TkNBQVFNb3RlcEthVGl4Zm11N0F1d3FSLzJ5TEtkUjhLQ2d0dllXdTJzaVUwS29yNmYyZXk0LzAyTwp0ZmpQYkxpRWVuczN2UFg3Rm5PZWFRSjF3cXJueExNK28yMHdhekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEClZSMGxCQll3RkFZSUt3WUJCUVVIQXdJR0NDc0dBUVVGQndNQk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWUQKVlIwT0JDSUVJT2p0N0xYVUNaa0M1cHBTaTI5SXpLbHpzNDlUcEs0Rndsc2NoeDJYUXI4eE1Bb0dDQ3FHU000OQpCQU1DQTBnQU1FVUNJUUNlKzJQVXFGZmM5OWFxajRUcnlYUzZlRVNkNjRPODVJalNCeWdmVWZLL1dnSWdEcWdnCi8vdU5HWkpxWFdsRHByeWU2TWpHZHhxWk9Sd1licmlwSjhJRGxkVT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=",
    "IssuerPublicKey": "CgJPVQoEUm9sZQoMRW5yb2xsbWVudElEChBSZXZvY2F0aW9uSGFuZGxlEkQKIIAqvVO0064eodWaEZcuz1F6AW1oWu0axbkgvIT663tREiCRl5Efbh6yTMcGNiBcSG56L7LYgFy/y2F9aGcPqWYiLBpECiBS2AqNmWoN33kbXGnDb8jc6KmuAi40CeJd7Nou3uswsxIgIe6aKx0GqR5+8cNpXNd2gFyUuMio95SRSuTbgg5ONK4iRAogrx59p/hCVljcpS8iEkkelw1UPsJK9PBtsCUVCcrUFs0SIPm3hxCPGhjyAZr6VvZwnM91Izh6uOM10nQFf/gcxhnsIkQKID3AxI4jBMzSpXWu+KToL8Ot+dQf8/xi4czMUnRwEWrKEiDwrZMQeUQVfmzJoBKOq9T2WorahextcH4elsIu/dgVeSJECiA5ifpZW7iCosRLomjmUl9n+NUW+jOKqPoAkEB35KlG9BIgWfruOnzS8q3CO4jx95E28UeUmWYN4OLWrwNhTyqsimciRAogV0WhBsYwD2o+P/nu1JsmPPs+8PFImC5opJkGySpJeV0SINCPU3qb+9+FgRAPSf3pvlSRZvvNBeDrwo8eJYyO2ZgTKogBCiCfpQfEGLgirumHqDNfpf90PIaMy7xFvVS9yzdXyg8PiBIgJjJ9ksZJpCeVK11OAM5JNyRDpXzVMLpGBGw8TBd/QzEaIHQ1Rd8ecDNSmVDIdtxqlMXCXLxd8jsMaQY/pPhqLl6zIiBJjGLS+mwriz7H3gdCtrxBCURCIPS74e2wui+at+VfDDJECiCXg9Z6hbXIxVsZdhuoOKa4Auj8V/IGwnl0TlhSeO8yaRIgkUU/BC8qyvKtWodhJV1KpZ4e/gJTw1bq8J5b1grL3zE6RAogUgjoUcuIC5BdT4bGqR33PadXUQCv2F0dODjMOgK6MmASIIIGuxk9rOUMahawk3CyO+kmV+zJLpjG/qzHCGNEUvFeQiDuGS2iGNMt6I0MKmozA8da/RbtyPfaIgrQzAgTvvEGEEogJdunayMZegxNtQZuGbkc+C3p9bhejDp96MwH2F43kjNSIAs+0BWuJxsE79+JZ28/CcZ2kGGQEMJFcJSu3FvBqXIG",
    "IssuerRevocationPublicKey": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUhZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNJRFlnQUV5SUk1d3pPMlY2SmUxTThjb3dvUkZyb2xBZTBMbkdkQwo0VUluSE41TTExVFBHS1dVUnFjRlVITXgxYTVxcjA1S1ZLVlRpS011Z3VWK2ZiM2pGK2VOUjU3d3FhQkJQVjhUCklCMUUwdFU2QUl4VGhtS3VGN1Q5TW11amFlWG04bGZiCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo=",
    "Version": "1.4.7"
  },
  "errors": [],
  "messages": [],
  "success": true
}

Validación de la información del servicio Fabrica CA de la entidad certificadora del Host 3 y resultado de la respuesta.

curl -X GET https://0.0.0.0:9054/api/v1/cainfo --insecure | jq 
{
  "result": {
    "CAName": "ca_org3",
    "CAChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXakNDQWdDZ0F3SUJBZ0lSQU1yVzJJRFFOOGk4THBoeTJ4a0RPZ0F3Q2dZSUtvWkl6ajBFQXdJd2R6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHekFaQmdOVkJBb1RFbTl5WnpNdWJXbGtiMjFwYm1sdkxtTnZiVEVlTUJ3R0ExVUVBeE1WClkyRXViM0puTXk1dGFXUnZiV2x1YVc4dVkyOXRNQjRYRFRJd01EWXhNREF6TURnd01Gb1hEVE13TURZd09EQXoKTURnd01Gb3dkekVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVgpCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhHekFaQmdOVkJBb1RFbTl5WnpNdWJXbGtiMjFwYm1sdkxtTnZiVEVlCk1Cd0dBMVVFQXhNVlkyRXViM0puTXk1dGFXUnZiV2x1YVc4dVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkkKemowREFRY0RRZ0FFTW5sMkdlRHAyaThvbzZoalBpYm45UXVvellkTkR4Y014LzlJYzVGQ2s3TXVHMEkxN3FiYgpoVjNVK1FraFBUZzRHVG9LVG5sVlV6ajQ1TDBqWUpqTkphTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHCkExVWRKUVFXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0cKQTFVZERnUWlCQ0N3R2FNNFltbitucTdIVC9wZ1RNZXMrVWdUMlB5ZnhCTkJLVGl0c1hJdGFEQUtCZ2dxaGtqTwpQUVFEQWdOSUFEQkZBaUVBbERDUDdwb0Vrd0ZrNVZpY05nbHdtTkxtRWJYcVpXS3lCNEtaVDVuWVErRUNJSEhiClZ6T29VZ2xBd204OVg1MEloTzQ3aitwbkRCVVFJcTZjc2R2ZUhoclkKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=",
    "IssuerPublicKey": "CgJPVQoEUm9sZQoMRW5yb2xsbWVudElEChBSZXZvY2F0aW9uSGFuZGxlEkQKIIQG8NAI0PYPQALFJDGopGqipxOfLWo59lTn8u4TajbpEiD7mIWF9CyDeIuKe1ODuawT+pEfwSqjFkReAMCJNnXvahpECiCFnzu6S+JG4Vz72X6ujEkwtxtzfPG8iBNR/nIAM6GSfRIgZeM5kUC5yCZHIgAYBMlUlNmqwmi9Ny+SNNZB9ME9fcIiRAogLvtGEwsP9KD69gmwJv1do7dD5wjEDijukLW4cSSDDGYSIK3mBBeUnIvZ/BqTeHaMdQ5O6Bbsx3CDB6eLeM3qDkBmIkQKIOJXsPwExQhvC1LfD9rFxbo4g5YIb+ZF1b+oHzTKCKEWEiBJdhrpFrYK4S6azIPP4Dv/Z74zIfLhav6KWHhmBbjfqyJECiAvPSwzn1KhKLCxiELozWMCvmr0Icne9kbdHNUOecd8UhIgDMC6O9SEZ+2KfIoScm9DiSMnt/saGlHR0JffZZuj1yIiRAogsB1yM/RYGRjendYN6rXifBtu646QfB4OZ0mBZCdUsmYSIM4cKdRvrb4NXsi5pb0UGakSD/hUGoyLdYC4+y3WuTfYKogBCiA3WcLbk5pXeqvzau9zlA1w16OPqkB53gfEeFlYxvKpQBIgxHfcWUHH/Mm6lff2MePauKKGEbVa8sHOgnRYYhOPr5QaINZmv31/4nA826H6jlFM33i7N84L5jsQJ3EEwb+YZkeXIiC/BIF2UNYhBm1YgjIIzpjftdJ8g2W9lO7ASam9kaGczTJECiARwQYkhuGnJNZrA1Ce0V9lxEEfnxxS1U7k0B5rcCBIyxIgWEP6c1zOa8D73TjR/2r8RgIzD8smFz3nEZr96pMG1TI6RAogU/nnZcSMA8h0dqfkxZQtvtTinNesGwlUcz8h3+hpNnwSICisK0z4QGra8geqLyn0cxHho6u88iQi+XVt/IiNtOcJQiAMj0570HIiuaE2/wYjvJPheUcMgDkcU/V9cp2oG49KxEogExrXgPADEHONJmU8SjyVPxurHKnInkf2DNjlcmihJh9SICqK4OmqXh/09dAPGj+nxjN2ebtxv1WxJwRBM1cMHRQ8",
    "IssuerRevocationPublicKey": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUhZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNJRFlnQUVHeEpzT3dUeEljZWxRZjlGNERobzhYOGo0K0RldVpsdgpaSlg5QVBuTDJtQkpjS1NaK3crVXZFQi9DdGYxY2lWaG1Pa25WYURKZmF4bFVDdkw1dUVFQWlZc1M5Ujc2SFI4CnhkVE1IRHRKTXBOZzFaREJYWmNFamRNODExWnhmdGNoCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo=",
    "Version": "1.4.7"
  },
  "errors": [],
  "messages": [],
  "success": true
}

Fuente: https://github.com/hyperledger/fabric-ca

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *