Obtendo uma chave pública para verificação de assinatura
Use uma chave pública GPG para verificar a assinatura de imagens assinadas em um pipeline de implementação contínua (CD).
É possível obter uma chave pública GPG da seguinte forma:
- Usando o pipeline de integração contínua (CI).
- Usando o seu computador local.
Obtendo uma chave pública GPG usando o pipeline de integração contínua (CI)
-
Para obter uma chave pública, inclua a variável de ambiente
print-code-signing-public-keycom um valor 1 em seu pipeline de IC. Depois de executar o pipeline de CI, a chave pública do GPG é impressa no console no estágiobuild-sign-artifactEm seguida, é possível copiar a chave pública em um arquivo e codificá-la no formato base64 executando o comando a seguir:cat copied_key.txt | base64 -
Copie a chave codificada em seu pipeline de implementação contínua (CD)
Obtendo uma chave pública GPG usando seu computador local
Se você tiver a chave privada GPG em seu conjunto de chaves, será possível exportar a chave pública diretamente
-
Verifique se a sua máquina tem um anel de chaves GPG Os chaveiros são agrupamentos de chaves que permitem que esses agrupamentos sejam gerenciados de forma independente. Para obter mais informações, consulte Agrupando chaves juntas usando conjuntos de chaves Execute o comando a seguir:
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 a chave GPG existir em seu computador, exporte a chave pública GPG executando o comando a seguir:
gpg --armor --export <Email Address> -----BEGIN PGP PUBLIC KEY BLOCK----- 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 ftfswLBW+es4fQ== =0FYC -----END PGP PUBLIC KEY BLOCK----- -
Após exportar a chave pública GPG, codifique-a no formato
base64antes de copiá-la para o campocode-signing-certificate.
Armazene a chave
Forneça a chave GPG para o pipeline de CD de uma das seguintes maneiras:
- Armazene a chave em IBM® Key Protect for IBM Cloud®.
- Armazene a chave em IBM Cloud® Secrets Manager.
- Armazene a chave diretamente na cadeia de ferramentas de IC
Certifique-se de que a chave seja copiada no formato correto para evitar um erro de assinatura do pipeline de CI. Use pbcopy (OS X) ou clip (Windows Git bash) nos comandos especificados nas seções a seguir para copiar
o conteúdo da chave para a área de transferência.
Armazene a chave em Key Protect
Deve-se duplicar a codificação base64 da chave GPG antes de armazená-la na instância do Key Protect.
Exporte e copie a chave GPG para a área de transferência da seguinte forma:
-
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
-
Em seu console do IBM Cloud, selecione a instância do Key Protect na qual você deseja armazenar a chave GPG gerada.
-
Clique no ícone Incluir
para incluir nova chave na instância.
-
Selecione a opção Importar sua própria chave.
-
Selecione o tipo de chave como Standard Key (Chave padrão ).
-
Dê um nome apropriado no campo Nome da chave. A chave GPG armazenada pode ser recuperada posteriormente usando esse nome.
-
Copie a chave exportada no campo Material da chave.
Assegure-se de que não haja nenhuma linha extra no final da chave ao copiar a chave e colá-la no campo Material da chave.
-
Expanda a seção Opções avançadas e selecione a opção Escolher um conjunto de chaves como padrão.
-
Inclua a chave em sua proteção de chave clicando em Incluir chave.
Adicionar a chave para proteger a chave
Para obter mais informações sobre Key Protect, consulte Sobre o Key Protect.
Armazene a chave em Secrets Manager
Deve-se apenas base64 codificar a chave GPG antes de armazená-la em sua instância do Secrets Manager.
-
Exporte e copie a chave GPG para a área de transferência.
-
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
-
-
No console IBM Cloud, selecione a instância Secrets Manager onde deseja armazenar a chave GPG gerada nas etapas anteriores.
-
Clique no ícone Incluir
para incluir nova chave na instância.
-
Selecione a opção Outro tipo de segredo.
Outro tipo de segredo -
Selecione o tipo de chave como Standard Key (Chave padrão ).
-
Dê um nome apropriado no campo Name (Nome ). A chave GPG armazenada pode ser recuperada posteriormente usando esse nome.
-
Escolha a opção como Valor secreto e cole a chave exportada anteriormente no campo Valor secreto.
Assegure-se de que não haja nenhuma linha extra no final da chave ao copiar a chave e colá-la no campo Valor secreto.
-
Inclua a chave em sua instância do Key Protect clicando em Incluir.
Adicionar a chave
Para obter mais informações sobre o Secrets Manager, consulte Introdução ao Secrets Manager.
Exporte a chave privada e armazene-a diretamente no pipeline de integração contínua
Use este método apenas para teste Use keyprotect ou secrets manager para armazenar chaves.
Deve-se codificar a chave GPG por base64 única antes de armazená-la como uma propriedade de pipeline segura
Armazene com segurança a chave GPG em uma instância Key Protect ou Secrets Manager conforme a seguir:
-
OS X ou Linux
gpg --armor --export <Email Address> | base64 -
Windows
gpg --armor --export <Email Address> | base64 -w0