Acquisizione di una chiave pubblica per la verifica della firma

Utilizzare una chiave pubblica GPG per verificare la firma delle immagini firmate in una pipeline CD (Continuous Deployment).

È possibile ottenere una chiave pubblica GPG come segue:

  • Utilizzo della pipeline di integrazione continua (CI).
  • Utilizzo del computer locale.

Acquisizione di una chiave pubblica GPG utilizzando la pipeline di integrazione continua (CI)

  1. Per ottenere una chiave pubblica, aggiungi la variabile di ambiente print-code-signing-public-key con un valore di 1 nella tua pipeline CI. Dopo aver eseguito la pipeline CI, la chiave pubblica GPG viene stampata sulla console nella fase build-sign-artifact. Puoi quindi copiare la chiave pubblica in un file e codificarla in formato base64 immettendo il seguente comando:

    cat copied_key.txt | base64
    
  2. Copia la chiave codificata nella tua pipeline di distribuzione continua (CD).

Ottenere una chiave pubblica GPG utilizzando il computer locale

Se si dispone della chiave privata GPG nel file di chiavi, è possibile esportare direttamente la chiave pubblica.

  1. Controlla se la tua macchina ha un portachiavi GPG. I key ring sono raggruppamenti di chiavi che consentono la gestione indipendente di tali raggruppamenti. Per ulteriori informazioni, consultare Raggruppamento delle chiavi utilizzando i keyring. Esegui il seguente comando:

     gpg --list-keys
    
    /home/user/.gnupg/pubring.kbx
    -------------------------------
    pub   rsa3072 2021-04-15 [SC] [expires: 2023-04-15]
          88DC11E8FDDF028F02E4184719D6C4C5990F144F
    uid           [ unknown] user name <user.name@email.com>
    sub   rsa3072 2021-04-15 [E] [expires: 2023-04-15]
    
  2. Se la chiave GPG esiste sul tuo computer, esporta la chiave pubblica GPG immettendo il seguente comando:

    gpg --armor --export  <Email Address>
    
    
        -----BEGIN PGP PUBLIC KEY BLOCK-----
        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
        ftfswLBW+es4fQ==
        =0FYC
        -----END PGP PUBLIC KEY BLOCK-----
    
  3. Dopo aver esportato la chiave pubblica GPG, codificarla in formato base64 prima di copiarla nel campo code-signing-certificate.

Memorizza la chiave

Fornire la chiave GPG alla pipeline del CD in uno dei modi seguenti:

  • Archivia la chiave in IBM® Key Protect for IBM Cloud®.
  • Archivia la chiave in IBM Cloud® Secrets Manager.
  • Memorizzare la chiave direttamente nella toolchain CI.

Assicurarsi che la chiave sia copiata nel formato corretto per impedire un errore di firma della pipeline CI. Utilizzare pbcopy (OS X) o clip (Windows Git bash) nei comandi specificati nelle seguenti sezioni per copiare il contenuto chiave negli appunti.

Archiviare la chiave in Key Protect

Devi raddoppiare base64 la codifica della chiave GPG prima di memorizzarla nell'istanza Key Protect.

Esportare e copiare la chiave GPG negli appunti nel modo seguente:

  • OS X

    gpg --armor --export <Email Address> | base64 | base64 | pbcopy
    
  • Windows

    gpg --armor --export <Email Address> | base64 -w0 | base64 -w0 | clip
    
  • Linux

    gpg --armor --export <Email Address> | base64 | base64
    
  1. Nella tua console IBM Cloud, seleziona l'istanza Key Protect in cui vuoi archiviare la chiave GPG che hai generato.

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

  3. Selezionare l'opzione Importa la propria chiave.

  4. Selezionare il tipo di chiave Chiave standard.

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

  6. Copia la chiave che hai esportato nel campo Materiale chiave.

    Assicurarsi che non vi sia alcuna riga aggiuntiva alla fine della chiave quando si copia la chiave e la si incolla nel campo Materiale chiave.

  7. Espandere la sezione Opzioni avanzate e selezionare l'opzione Scegli un keyring come predefinita.

  8. Aggiungi la chiave alla tua protezione della chiave facendo clic su Aggiungi chiave.

    Aggiungere la chiave alla protezione della chiave
    Aggiungere la chiave alla protezione della chiave

Per ulteriori informazioni su Key Protect, vedi Informazioni su Key Protect.

Archivia la chiave in Secrets Manager

Devi codificare base64 singola la chiave GPG prima di memorizzarla nella tua istanza Secrets Manager.

  1. Esportare e copiare la chiave GPG negli appunti.

    • OS X

      gpg --armor --export <Email Address> | base64 | pbcopy
      
    • Windows

      gpg --armor --export <Email Address> | base64 -w0 | clip
      
    • Linux

      gpg --armor --export <Email Address> | base64
      
  2. Nella tua console IBM Cloud, seleziona l'istanza Secrets Manager in cui vuoi archiviare la chiave GPG che hai generato nei passi precedenti.

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

  4. Selezionare l'opzione Altro tipo di segreto.

    Altro tipo di segreto
    Altro tipo di segreto

  5. Selezionare il tipo di chiave Chiave standard.

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

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

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

  8. Aggiungi la chiave all'istanza Key Protect facendo clic su Add.

    Aggiungere la chiave
    Aggiungere la chiave

Per ulteriori informazioni su Secrets Manager, vedi Introduzione a Secrets Manager.

Esporta la chiave privata e memorizzarla direttamente nella pipeline CI

Utilizzare questo metodo solo per il test. Utilizzare keyprotect o secrets manager per memorizzare le chiavi.

Devi codificare la chiave GPG base64 singola prima di memorizzarla come una proprietà della pipeline protetta.

Archivia in modo sicuro la chiave GPG in un'istanza Key Protect o Secrets Manager come segue:

  • OS X o Linux

    gpg --armor --export <Email Address> | base64
    
  • Windows

    gpg --armor --export <Email Address> | base64 -w0