Como configurar uma chave GPG para que seus commits sejam verificados?
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:
-
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. -
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. -
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. -
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. -
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).
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/
)
E rode o comando abaixo, substituindo com a sua Key ID, para exportar a chave pública:
gpg --armor --export **KEY_ID**`
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":
Dê um nome para identificar sua chave e cole a chave pública no campo reservado e clique em "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**
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:
Seu commit agora foi assinado com a chave GPG.
Com isso os seus commits agora aparecerão com a tag "Verified" no GitHub:
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:
Pronto, agora o seu git já foi configurado para assinar seus commits com sua chave GPG.