IBM Cloud Docs
Generación de una clave GPG

Generación de una clave GPG

Los artefactos creados por la cadena de herramientas de integración continua de IBM Cloud DevSecOps y registrados en el inventario deben estar firmados antes de que se desplieguen en producción. El conducto de integración continua utiliza Skopeo como herramienta predeterminada para proporcionar la prestación de firma de artefactos.

Cree y almacene una clave GPG utilizada por el conducto de integración continua de DevSecOps de forma automática o manual.

Generar automáticamente una clave GPG

Utilizando este método, la plantilla genera automáticamente la clave GPG. Especifique el nombre y el correo electrónico para la generación de claves realizando estos pasos:

  1. Vaya a Firma de artefacto y pulse Nuevo.

    Firma de imagen
    Figura 1. Firma de artefactos

  2. En la ventana, los campos nombre y correo electrónico se rellenan previamente con el nombre de la cadena de herramientas y el ID de correo electrónico. Cambie el nombre y el ID de correo electrónico para que reflejen los requisitos clave de GPG. También puede almacenar las claves en el proveedor de secretos seleccionando el recuadro.

    Cambiar nombre y correo electrónico
    Figura 2. Cambiar nombre y correo electrónico

  3. Después de generar la clave, puede copiarla para su referencia.

    Certificado de firma de imagen
    Figura 3 Certificado de firma de artefacto

La clave copiada está en formato base64. Decode la clave antes de importarla al conjunto de claves. echo <encoded_gpg_key> | base64 --decode

Generar manualmente una clave GPG

Descarga e instalación de herramientas de línea de mandatos de GPG

Descargue e instale las herramientas de línea de mandatos GPG para el sistema operativo. Vaya a la sección GnuPG para descargar las herramientas de su sistema operativo.

Mac OS X

  • Descargue e instale Mac GPG.
  • Verifique la versión del GPG instalado. Desde la línea de mandatos, ejecute el mandato siguiente:
$ gpg --version
gpg (GnuPG) 2.3.1
libgcrypt 1.9.3
Copyright (C) 2021 Free Software Foundation, Inc.
  • Para las versiones de GPG anteriores a 2.3.1, es posible que no sea posible utilizar la opción -- passphrase = ''. En este caso, puede omitir la contraseña en el diálogo siguiente pulsando Intro cuando se le solicite.

Windows

  • Descargue e instale GitBash (necesario para la codificación base64 ).
  • Verifique la versión del GPG instalado. Ejecute el mandato siguiente en el indicador de mandatos de Git bash:
$ gpg --version
gpg (GnuPG) 2.2.27
libgcrypt 1.8.7
Copyright (C) 2021 g10 Code GmbH

Generación de una clave de la API

Deje la frase de contraseña y el campo vacío si el mandato generate-key abre un diálogo que solicita una frase de contraseña. Esto es una limitación con el programa de utilidad (skopeo) de la firma de imágenes donde el conducto no puede aceptar una clave privada que está protegida con una frase de contraseña. Si proporciona la frase de contraseña durante la creación, la interconexión no puede decodificar el certificado y la interconexión falla en el paso de firma de imagen.

Mac OS X y Linux™

Desde el indicador de shell, ejecute el mandato siguiente:

gpg --pinentry-mode loopback --passphrase='' --generate-key
  • Especifique su nombre y dirección de correo electrónico.
  • Especifique O para iniciar la creación de claves.
  • Después de generar la clave, seleccione la opción O.

Windows

GPG Versión > 1.4

En el indicador de mandatos del hash de Git, ejecute el mandato siguiente:

gpg --pinentry-mode loopback --passphrase='' --generate-key
  • Especifique su nombre en el campo Nombre real.
  • Especifique su dirección de correo electrónico en la Dirección de correo electrónico.
  • Especifique O para iniciar la creación de la clave.
  • Después de generar la clave, seleccione la opción O.

GPG Version < 1.4 (o cualquier anomalía con el mandato anterior)

En el indicador de mandatos del hash de Git, ejecute el mandato siguiente:

gpg --gen-key
  • clase de clave: seleccione la opción predeterminada (1) RSA y RSA (valor predeterminado)
  • keysize: conservar valor predeterminado (2048)
  • validez de clave: mantenga el valor predeterminado como 0. Esto se debe a que la clave de valor 0 no caduca.
  • Confirme su elección: especifique y.
  • Escriba su nombre en el campo Nombre real.
  • Especifique su dirección de correo electrónico en la Dirección de correo electrónico.
  • Especifique O para iniciar la creación de claves.
  • Después de generar la clave, seleccione la opción O.

Verifique la creación de claves

Verifique que se haya creado la clave gpg. En el indicador de mandatos, ejecute el mandato siguiente:

gpg --list-keys

Asegúrese de que su clave aparezca en la lista. Ejemplo de salida en Windows:

$ gpg --list-keys
/c/Users/FredSmith/.gnupg/pubring.gpg
-------------------------------------
pub   2048R/1BB354B5 2021-06-08
uid   Fred Smith <fred@company.com>
sub   2048R/F91C39A6 2021-06-08

Exportación de la clave

Este campo es opcional. Ejecute este mandato para asegurarse de que se puede exportar la clave gpg.

gpg --export-secret-key <Email Address>

La clave sin formato que se exporta no se debe copiar directamente. Se recomienda almacenar de forma segura la clave que se genera en este paso en la instancia de {{site.data.keyword.keymanagementserviceshort}} o {{site.data.keyword.secrets-manager_short}}. Consulte las secciones siguientes para obtener más detalles.

Almacenamiento de la clave

La clave GPG se debe proporcionar a la interconexión de integración continua de una de las maneras siguientes:

  • Almacenado en {{site.data.keyword.keymanagementservicefull}}
  • Almacenado en {{site.data.keyword.secrets-manager_full}}
  • Almacenado directamente en la cadena de herramientas de integración continua

Asegúrese de que la clave se copie en el formato correcto para evitar un error de firma de interconexión de integración continua debido a un error de importación. Utilice pbcopy (Mac OS X) o clip (Windows Git bash) en el mandato siguiente para copiar el contenido de la clave en el portapapeles.

Almacene la clave en {{site.data.keyword.keymanagementserviceshort}}

Exporte y copie la clave GPG en el portapapeles.

La codificación doble base64 de la clave GPG es necesaria antes de almacenarla en la instancia de {{site.data.keyword.keymanagementserviceshort}}.

OS X

gpg --export-secret-key <Email Address> | base64 | base64 | pbcopy

Windows

gpg --export-secret-key <Email Address> | base64 -w0 | base64 -w0 | clip

Linux™

gpg --export-secret-key <Email Address> | base64 | base64
  1. En la consola de {{site.data.keyword.cloud_notm}}, seleccione la instancia de {{site.data.keyword.keymanagementserviceshort}} en la que desea almacenar la clave GPG generada a partir de los pasos anteriores.

  2. Pulse el icono Añadir + para añadir una clave nueva a la instancia.

  3. Seleccione la opción Importar su propia clave.

  4. Seleccione Seleccionar un tipo de clave como Clave estándar.

  5. Proporcione el nombre adecuado en el campo Nombre de clave. La clave GPG almacenada se puede recuperar más adelante mediante este nombre de clave.

  6. Copie la clave tal como se ha exportado anteriormente en el campo Material de clave.

    Asegúrese de que al copiar la clave y pegarla en el campo Material de clave, no haya ninguna línea adicional al final de la clave.

  7. Seleccione la opción Elegir un conjunto de claves como valor predeterminado.

  8. Pulse Añadir clave para añadir la clave a la protección de claves.

    Añadir la clave a la protección de claves
    Figura 4. Añada la clave para proteger la clave

Para obtener más información sobre {{site.data.keyword.keymanagementserviceshort}}, consulte los documentos de {{site.data.keyword.keymanagementserviceshort}}.

Almacene la clave en {{site.data.keyword.secrets-manager_short}}

Es necesaria una única codificación base64 de la clave GPG antes de almacenarla en la instancia de {{site.data.keyword.secrets-manager_short}}.

Exporte y copie la clave GPG en el portapapeles.

OS X

gpg --export-secret-key <Email Address> | base64 | pbcopy

Windows

gpg --export-secret-key <Email Address> | base64 -w0 | clip

Linux™

gpg --export-secret-key <Email Address> | base64
  1. En la consola de {{site.data.keyword.cloud_notm}}, seleccione la instancia de {{site.data.keyword.secrets-manager_short}} donde desea almacenar la clave GPG generada a partir de los pasos anteriores.

  2. Pulse el icono Añadir + para añadir una clave nueva a la instancia.

  3. Seleccione la opción Otro tipo de secreto.

    Otro tipo de secreto
    Figura 5. Otro tipo de secreto

  4. Seleccione el tipo Clave estándar para la opción Seleccionar un tipo de clave.

  5. Asigne un nombre adecuado en el campo Nombre. La clave GPG almacenada se puede recuperar más adelante con este nombre.

  6. Elija la opción como Valor de secreto y pegue la clave tal como se ha exportado anteriormente en el campo Valor de secreto.

    Asegúrese de que al copiar la clave y pegarla en el campo Valor de secreto, no haya ninguna línea adicional al final de la clave.

  7. Añada la clave a la instancia de {{site.data.keyword.keymanagementserviceshort}} pulsando el icono Añadir.

    Añada la clave
    Figura 6. Añada la clave

Para obtener más información sobre {{site.data.keyword.secrets-manager_short}}, consulte Cómo empezar con {{site.data.keyword.secrets-manager_short}}.

Exporte la clave privada y almacénela directamente en la interconexión de integración continua

Este enfoque no se recomienda y debe utilizarse únicamente para la experimentación. Utilice Key Protect o Secrets Manager para almacenar las claves. Para obtener más información, consulte Configuración de los almacenes de secretos

Es necesaria una única codificación base64 de la clave GPG antes de almacenarla como una propiedad de interconexión protegida.

Almacene de forma segura la clave GPG en una instancia {{site.data.keyword.keymanagementserviceshort}} o {{site.data.keyword.secrets-manager_short}}.

Mac OS X/ Linux™

gpg --export-secret-key <Email Address> | base64

Windows

gpg --export-secret-key <Email Address> | base64 -w0