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)

  1. Para obter uma chave pública, inclua a variável de ambiente print-code-signing-public-key com 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ágio build-sign-artifact Em 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
    
  2. 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

  1. 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]
    
  2. 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-----
    
  3. Após exportar a chave pública GPG, codifique-a no formato base64 antes de copiá-la para o campo code-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
    
  1. Em seu console do IBM Cloud, selecione a instância do Key Protect na qual você deseja armazenar a chave GPG gerada.

  2. Clique no ícone Incluir ícone Incluir para incluir nova chave na instância.

  3. Selecione a opção Importar sua própria chave.

  4. Selecione o tipo de chave como Standard Key (Chave padrão ).

  5. Dê um nome apropriado no campo Nome da chave. A chave GPG armazenada pode ser recuperada posteriormente usando esse nome.

  6. 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.

  7. Expanda a seção Opções avançadas e selecione a opção Escolher um conjunto de chaves como padrão.

  8. Inclua a chave em sua proteção de chave clicando em Incluir chave.

    Adicionar a chave para proteger a 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.

  1. 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
      
  2. No console IBM Cloud, selecione a instância Secrets Manager onde deseja armazenar a chave GPG gerada nas etapas anteriores.

  3. Clique no ícone Incluir ícone Incluir para incluir nova chave na instância.

  4. Selecione a opção Outro tipo de segredo.

    Outro tipo de segredo
    Outro tipo de segredo

  5. Selecione o tipo de chave como Standard Key (Chave padrão ).

  6. Dê um nome apropriado no campo Name (Nome ). A chave GPG armazenada pode ser recuperada posteriormente usando esse nome.

  7. 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.

  8. Inclua a chave em sua instância do Key Protect clicando em Incluir.

    Adicionar a chave
    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