Como Assinar Commits no GitHub com Chave GPG
Assinar commits com GPG no GitHub vai muito além de exibir um selo verde de Verified. Essa prática adiciona uma camada importante de segurança, autenticidade e confiança ao seu fluxo de desenvolvimento.
Quando um commit é assinado digitalmente, o GitHub consegue validar que aquele commit realmente foi criado por você e que o conteúdo não foi alterado após a assinatura.
Isso é especialmente importante para:
- projetos open source,
- equipes corporativas,
- pipelines CI/CD,
- proteção contra spoofing de identidade,
- auditoria e rastreabilidade de alterações.
Por Que Assinar Commits é Importante?
Sem assinatura GPG, o Git identifica autores apenas pelo nome e e-mail configurados localmente. Como essas informações podem ser alteradas manualmente, não existe garantia criptográfica de que um commit foi realmente criado pelo autor indicado.
Exemplo:
git config user.name "Seu Nome"
git config user.email "voce@email.com"Com isso, commits falsos poderiam aparecer com sua identidade.
A assinatura GPG resolve esse problema usando criptografia assimétrica:
- Você possui uma chave privada secreta.
- O GitHub recebe sua chave pública.
- O GitHub verifica se o commit foi realmente assinado pela sua chave privada.
Quando tudo está correto, o GitHub exibe o selo:
- Verified
O Que Você Vai Fazer Neste Tutorial
Neste guia você aprenderá como:
- Instalar o GPG no Windows
- Criar ou localizar sua chave GPG
- Configurar o Git para usar a assinatura
- Exportar sua chave pública
- Adicionar a chave no GitHub
- Assinar commits automaticamente
- Corrigir erros comuns no Windows
1. Instalando o Gpg4win
O método mais simples para usar GPG no Windows é através do Gpg4win.
Download Oficial
O pacote instala:
- GPG
- Kleopatra
- binários necessários para integração com Git
- ferramentas de criptografia OpenPGP
2. Criando ou Verificando Sua Chave GPG
Após instalar o Gpg4win, abra o PowerShell:
gpg --list-secret-keys --keyid-format=longVocê verá algo semelhante a:
sec rsa4096/3CF8E8Dxxxxxx
uid Seu Nome <email@gmail.com>O trecho:
3CF8E8Dxxxxxxé o ID da sua chave GPG.
3. Configurando o Git para Usar GPG
Agora precisamos conectar o Git ao GPG.
Configurar caminho do executável GPG
git config --global gpg.program "C:/Program Files/GnuPG/bin/gpg.exe"Configurar sua chave
git config --global user.signingkey 3CF8E8DxxxxxxAtivar assinatura automática
git config --global commit.gpgsign trueA partir daqui, todos os commits serão assinados automaticamente.
4. Exportando Sua Chave Pública
Agora você precisa enviar sua chave pública para o GitHub.
Execute:
gpg --armor --export 3CF8E8DxxxxxxA saída será semelhante a:
-----BEGIN PGP PUBLIC KEY BLOCK-----
...
-----END PGP PUBLIC KEY BLOCK-----Copie todo o conteúdo.
5. Adicionando a Chave no GitHub
Abra a página de configuração:
Depois:
- Clique em New GPG key
- Cole a chave pública
- Clique em Add GPG key
6. Criando Seu Primeiro Commit Assinado
Agora faça um commit normalmente:
git commit -m "teste assinatura"Se o GPG solicitar senha/PIN:
- utilize a senha definida ao criar a chave no Kleopatra.
7. Verificando a Assinatura do Commit
Para validar localmente:
git log --show-signature -1Resultado esperado:
Good signature from ...Após enviar para o GitHub:
git pushO commit aparecerá com selo:
- ✅ Verified
Corrigindo Erro “gpg: signing failed: Not implemented”
Esse erro é comum no Windows:
gpg: signing failed: Not implementedNormalmente acontece por:
- incompatibilidade do Git Bash,
- configuração incorreta do GPG,
- formato errado da assinatura OpenPGP.
Solução
Execute:
git config --global gpg.format openpgpDepois reinicie:
- VS Code
- terminal
- Git Bash
Configuração Final Esperada
Confira tudo:
git config --global --listVocê deverá ter algo parecido com:
commit.gpgsign=true
user.signingkey=3CF8E8Dxxxxxx
gpg.program=C:/Program Files (x86)/GnuPG/bin/gpg.exe
gpg.format=openpgpTeste Completo
Faça um teste final:
echo test >> teste.txt
git add .
git commit -m "signed commit"
git pushSe tudo estiver correto:
- o GitHub exibirá
Verified, - seus commits estarão autenticados,
- e sua identidade estará protegida criptograficamente.
Considerações Finais
Assinar commits com GPG é uma prática recomendada para qualquer desenvolvedor que deseja aumentar a segurança e credibilidade do seu workflow.
Além de evitar falsificação de autoria, commits assinados ajudam equipes a manter maior integridade no histórico do repositório.
Mesmo em projetos pessoais, utilizar assinatura GPG demonstra maturidade técnica e preocupação com boas práticas de desenvolvimento.