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)
-
Per ottenere una chiave pubblica, aggiungi la variabile di ambiente
print-code-signing-public-keycon un valore di 1 nella tua pipeline CI. Dopo aver eseguito la pipeline CI, la chiave pubblica GPG viene stampata sulla console nella fasebuild-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 -
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.
-
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] -
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----- -
Dopo aver esportato la chiave pubblica GPG, codificarla in formato
base64prima di copiarla nel campocode-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
-
Nella tua console IBM Cloud, seleziona l'istanza Key Protect in cui vuoi archiviare la chiave GPG che hai generato.
-
Fai clic sull'icona Aggiungi
per aggiungere una nuova chiave all'istanza.
-
Selezionare l'opzione Importa la propria chiave.
-
Selezionare il tipo di chiave Chiave standard.
-
Fornire un nome appropriato nel campo Nome chiave. La chiave GPG memorizzata può essere richiamata successivamente utilizzando questo nome.
-
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.
-
Espandere la sezione Opzioni avanzate e selezionare l'opzione Scegli un keyring come predefinita.
-
Aggiungi la chiave alla tua protezione della chiave facendo clic su Aggiungi 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.
-
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
-
-
Nella tua console IBM Cloud, seleziona l'istanza Secrets Manager in cui vuoi archiviare la chiave GPG che hai generato nei passi precedenti.
-
Fai clic sull'icona Aggiungi
per aggiungere una nuova chiave all'istanza.
-
Selezionare l'opzione Altro tipo di segreto.
Altro tipo di segreto -
Selezionare il tipo di chiave Chiave standard.
-
Fornire un nome appropriato nel campo Nome. La chiave GPG memorizzata può essere richiamata successivamente utilizzando questo nome.
-
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.
-
Aggiungi la chiave all'istanza Key Protect facendo clic su Add.
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