Skip to main content

Como configurar uma chave GPG para que seus commits sejam verificados?

· 4 min read
Felipe Schulz
Cloud Architect

head_image_post Imagem gerada por IA

Nesse post iremos aprender a como criar e configurar uma chave GPG, e como você configura o seu GitHub para utilizar essa chave e verificar a assinatura dos seus commits.

Assinar seus commits com GPG oferece uma camada extra de segurança, transparência e confiabilidade ao seu trabalho. É uma prática altamente recomendada, especialmente para projetos colaborativos e de código aberto.

Mas caso você ainda não utilize esse recurso, quais são os beneficios de usar? Apenas para ter uma label verde bonitinha "Verified" nos seus commits? Vamos conhecer algumas vantagens:

  1. Autenticidade:
    Assinar seus commits com uma chave GPG garante que eles realmente foram feitos por você. Isso ajuda a evitar falsificações e garante que o código é autêntico.

  2. Integridade:
    A assinatura GPG verifica que o conteúdo do commit não foi alterado desde que você o assinou. Isso é crucial para manter a integridade do código ao longo do tempo.

  3. Confiança:
    Em projetos colaborativos, especialmente em código aberto, assinaturas GPG aumentam a confiança entre colaboradores. Outros desenvolvedores podem verificar que os commits são de fontes confiáveis.

  4. Histórico de Auditoria:
    Assinaturas GPG fornecem um histórico de auditoria claro e verificável. Isso é útil para rastrear a origem de mudanças específicas e para auditorias de segurança.

  5. Conformidade:
    Em alguns segmentos de empresas, assinar commits pode ser um requisito de conformidade. Isso ajuda a garantir que o desenvolvimento de software segue padrões de segurança e autenticidade.

Convencido do uso e quer começar a assinar seus commits? Beleza, agora vamos para ação! 🚀

Como criar e configurar uma chave GPG

Instalação do GnuPG

Em muitas distribuições do Linux, o GnuPG (ou GNU Pivacy Guard) já vem instalado, então se este for o seu OS pode pular para a proxima etapa. Nos passos a frente iremos destacar como configurar no Windows.

No Windows, caso use o winget, use o comando:

winget install GnuPG.GnuPG

Caso não tenha o winget instalado (ou não use winget), poderá baixar o instalador pelo site do projeto Gpg4win, em Gpg4win - Secure email and file encryption with GnuPG for Windows

Agora que está instalado, recomendo reiniciar o seu terminal (basta fechar e abrir de novo, para que ele atualize o seu perfil).

Criar a chave GPG e configurar com GitHub

No terminal da sua preferência, execute o seguinte comando:

gpg --default-new-key-algo rsa4096 --gen-key

Será solicitado que você adicione o seu nome, seu email e também que você crie uma senha (essa senha será requerida a cada commit).

create_gpg

Revise as informaçãoes, digite O (letra "o" de Ok) para confirmar e dê enter.

No momento da geração da chave, para aumentar a entropia, recomendo que mexa o mouse, ou navegue na web. Em alguns segundos a sua chave será gerada.

Depois execute o comando abaixo para listar o Key ID da chave que foi gerada:

gpg --list-secret-keys --keyid-format=long

Na saída, copie o ID (apenas o que está logo após o rsa4096/ )

gpg_key_id

E rode o comando abaixo, substituindo com a sua Key ID, para exportar a chave pública:

gpg --armor --export **KEY_ID**`

export_public_key

Copie essa chave inteira e depois acesse a página SSH and GPG keys - GitHub.com para configurar a chave GPG, clicando no botão "New GPG key":

github_new_gpg_button

Dê um nome para identificar sua chave e cole a chave pública no campo reservado e clique em "Add GPG key":

add_gpg_key

Agora volte para o seu terminal, para que possamos configurar o Git para registrar os commits usando a chave que você criou, para isso use o seguinte comando:

git config --global user.signingkey **KEY_ID**

git_config_signinkey

Pronto, está configurado! Agora ao fazer o seu commit, use a flag -S para assinar

Abrirá uma janela do pinentry-qt, pedindo a senha que você criou no momento da configuração da chave:

commit_gpg

Seu commit agora foi assinado com a chave GPG.

Com isso os seus commits agora aparecerão com a tag "Verified" no GitHub:

github_verified

Bônus: Configurar para que todo commit já seja assinado com sua chave GPG

Caso queira que todo commit use essa chave GPG, você pode opcionalmente configurar com o comando:

git config --global commit.gpgsign true

Dessa forma, mesmo sem a flag -S, você terá os seus commits assinados:

gpgsign_true

Pronto, agora o seu git já foi configurado para assinar seus commits com sua chave GPG.