IBM Cloud Docs
Generazione di una chiave GPG

Generazione di una chiave GPG

Le risorse create dalla toolchain di integrazione continua IBM Cloud DevSecOps e registrate nell'inventario devono essere firmate prima di essere distribuite alla produzione. La pipeline di integrazione continua utilizza Skopeo come strumento predefinito per fornire la capacità di firma della risorsa utente.

Crea e memorizza una chiave GPG utilizzata dalla pipeline di integrazione continua Ops DevSecautomaticamente o manualmente.

Genera automaticamente una chiave GPG

Utilizzando questo metodo, il template genera la chiave GPG per te. Immetti il nome e email per la generazione della chiave completando questa procedura:

  1. Andare a Firma risorsa utente e fare clic su Nuovo.

    Firma immagine
    Figura 1. Firma della risorsa utente

  2. Nella finestra, i campi name e email sono prepopolati con il nome della toolchain e l'ID email. Modificare il nome e l'ID e-mail per riflettere i requisiti della chiave GPG. Puoi anche memorizzare le chiavi nel tuo provider di segreti selezionando la casella.

    Modifica nome ed email
    Figura 2. Modifica nome ed email

  3. Una volta generata la chiave, è possibile copiarla come riferimento.

    Certificato di firma immagine
    Figura 3 Certificato di firma risorsa utente

La chiave copiata è in formato base64. [Decodifica](/doc - draft/devsecops-workingtopic=devsecops-working-devsecops-async-stagesdevsecops-decoding-gpg-key.md) la chiave prima di importarla nel tuo keyring. echo <encoded_gpg_key> | base64 --decode

Genera manualmente una chiave GPG

Scarica e installa strumenti della riga di comando GPG

Scaricare e installare gli strumenti della riga comandi GPG per il proprio sistema operativo. Passare alla sezione GnuPG per scaricare gli strumenti per il proprio sistema operativo.

Mac OS X

  • Scaricare e installare Mac GPG.
  • Verificare la versione del GPG installato. Dalla riga di comando, eseguire il seguente comando:
$ gpg --version
gpg (GnuPG) 2.3.1
libgcrypt 1.9.3
Copyright (C) 2021 Free Software Foundation, Inc.
  • Per le versioni di GPG precedenti alla 2.3.1, potrebbe non essere possibile utilizzare l'opzione -- passphrase = ''. In questo caso, è possibile omettere la password nella seguente finestra di dialogo premendo Invio quando richiesto.

Windows™

  • Scarica e installa GitBash (richiesto per la codifica base64 ).
  • Verificare la versione del GPG installato. Esegui il seguente comando nel prompt dei comandi Git bash:
$ gpg --version
gpg (GnuPG) 2.2.27
libgcrypt 1.8.7
Copyright (C) 2021 g10 Code GmbH

Genera una chiave GPG

Lasciare la passphrase e il campo vuoti se il comando generate - key apre una finestra di dialogo che richiede una passphrase. Questa è una limitazione con il programma di utilità (skopeo) della firma dell'immagine in cui la pipeline non può accettare una chiave privata protetta con una passphrase. Se fornisci la passphrase durante la creazione, la tua pipeline non riesce a decodificare il certificato e la tua pipeline non riesce al passo di firma dell'immagine.

Mac OS X e Linux™

Dal prompt della shell, eseguire il seguente comando:

gpg --pinentry-mode loopback --passphrase='' --generate-key
  • Inserisci il tuo nome e indirizzo email.
  • Immettere O per avviare la creazione della chiave.
  • Una volta generata la chiave, selezionare l'opzione O.

Windows™

GPG Versione> 1.4

Dal prompt dei comandi bash Git, immetti il seguente comando:

gpg --pinentry-mode loopback --passphrase='' --generate-key
  • Immettere il proprio nome nel campo Nome reale.
  • Immettere il proprio indirizzo email in Indirizzo email.
  • Immettere O per avviare la creazione della chiave.
  • Una volta generata la chiave, selezionare l'opzione O.

GPG Versione < 1.4 (o qualsiasi errore con il precedente comando)

Dal prompt dei comandi bash Git, immetti il seguente comando:

gpg --gen-key
  • tipo di chiave: selezionare Opzione predefinita (1) RSA e RSA (predefinita)
  • keysize: conserva il valore predefinito (2048)
  • validità chiave: mantenere il valore predefinito come 0. Ciò è dovuto al fatto che la chiave valore 0 non scade.
  • Confermare la scelta: immettere s.
  • Immettere il proprio nome nel campo Nome reale.
  • Immettere il proprio indirizzo email in Indirizzo email.
  • Immettere O per avviare la creazione della chiave.
  • Una volta generata la chiave, selezionare l'opzione O.

Verificare la creazione della chiave

Verificare che la chiave GPG sia stata creata. Dal prompt dei comandi, eseguire questo comando:

gpg --list-keys

Assicurarsi che la chiave sia elencata. Output di esempio su 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

Esportare la chiave

Questo passo è facoltativo. Eseguire questo comando per assicurarsi che sia possibile esportare la chiave GPG.

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

La chiave non elaborata esportata non deve essere copiata direttamente. Si consiglia di memorizzare in modo sicuro la chiave generata in questo passo nella tua istanza {{site.data.keyword.keymanagementserviceshort}} o {{site.data.keyword.secrets-manager_short}}. Per ulteriori dettagli, consultare le sezioni successive.

Memorizza la chiave

La chiave GPG deve essere fornita alla pipeline CI in uno dei seguenti modi:

  • Archiviato in {{site.data.keyword.keymanagementservicefull}}
  • Archiviato in {{site.data.keyword.secrets-manager_full}}
  • Archiviato direttamente nella toolchain CI

Assicurarsi che la chiave sia copiata nel formato corretto per impedire un errore di firma della pipeline CI dovuto a un errore di importazione. Utilizzare pbcopy (Mac OS X) o clip (Windows Git bash) nel seguente comando per copiare il contenuto della chiave negli appunti.

Archiviare la chiave in {{site.data.keyword.keymanagementserviceshort}}

Esportare e copiare la chiave GPG negli appunti.

La doppia codifica base64 della chiave GPG è richiesta prima di archiviarla nella tua istanza {{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. Nella tua console {{site.data.keyword.cloud_notm}}, seleziona l'istanza {{site.data.keyword.keymanagementserviceshort}} in cui vuoi memorizzare la chiave GPG generata dai passi precedenti.

  2. Fai clic sull'icona Aggiungi + per aggiungere una nuova chiave all'istanza.

  3. Selezionare l'opzione Importa la propria chiave.

  4. Selezionare Seleziona un tipo di chiave come Chiave standard.

  5. Fornire il nome appropriato nel campo Nome chiave. La chiave GPG memorizzata può essere richiamata in un secondo momento da questo nome chiave.

  6. Copia la chiave come esportata in precedenza nel campo Materiale chiave.

    Assicurati che quando copi la chiave e la incolli nel campo Materiale chiave, non ci sia alcuna riga aggiuntiva alla fine della chiave.

  7. Selezionare l'opzione Scegli un keyring come predefinita.

  8. Fai clic su Add key per aggiungere la chiave alla tua key protect.

    Aggiungi la chiave alla protezione chiave
    Figura 4. Aggiungere la chiave a key protect

Per ulteriori informazioni su {{site.data.keyword.keymanagementserviceshort}}, vedi la documentazione{{site.data.keyword.keymanagementserviceshort}}.

Archivia la chiave in {{site.data.keyword.secrets-manager_short}}

È richiesta una singola codifica base64 della chiave GPG prima di memorizzarla nell'istanza {{site.data.keyword.secrets-manager_short}}.

Esportare e copiare la chiave GPG negli appunti.

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. Nella tua console {{site.data.keyword.cloud_notm}}, seleziona l'istanza {{site.data.keyword.secrets-manager_short}} in cui vuoi archiviare la chiave GPG generata dai passi precedenti.

  2. Fai clic sull'icona Aggiungi + per aggiungere una nuova chiave all'istanza.

  3. Selezionare l'opzione Altro tipo di segreto.

    Altro tipo di segreto
    Figura 5. Altro tipo di segreto

  4. Selezionare il tipo Chiave standard per l'opzione Seleziona un tipo di chiave.

  5. Fornire un nome appropriato nel campo Nome. La chiave GPG memorizzata può essere richiamata successivamente con questo nome.

  6. Scegli l'opzione come Valore segreto e incolla la chiave come esportata in precedenza nel campo Valore segreto.

    Assicurati che quando copi la chiave e la incolli nel campo Valore segreto, non ci sia alcuna riga aggiuntiva alla fine della chiave.

  7. Aggiungi la tua istanza {{site.data.keyword.keymanagementserviceshort}} facendo clic sull'icona Add.

    Aggiungi la chiave
    Figura 6. Aggiungere la chiave

Per ulteriori informazioni su {{site.data.keyword.secrets-manager_short}}, vedi Introduzione a {{site.data.keyword.secrets-manager_short}}.

Esporta la chiave privata e memorizzarla direttamente nella pipeline CI

Questo approccio non è raccomandato e deve essere utilizzato solo per la sperimentazione. Utilizzare Key Protect o Secrets Manager per memorizzare le chiavi. Per ulteriori informazioni, consultare Configurazione degli archivi segreti

È richiesta una singola codifica base64 della chiave GPG prima di memorizzarla come una proprietà della pipeline protetta.

Memorizza in modo sicuro la chiave GPG in un'istanza {{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