Skip to content
Como Assinar Commits no GitHub com Chave GPG

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:

  1. Instalar o GPG no Windows
  2. Criar ou localizar sua chave GPG
  3. Configurar o Git para usar a assinatura
  4. Exportar sua chave pública
  5. Adicionar a chave no GitHub
  6. Assinar commits automaticamente
  7. 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

Gpg4win Download

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=long

Você 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 3CF8E8Dxxxxxx

Ativar assinatura automática

git config --global commit.gpgsign true

A 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 3CF8E8Dxxxxxx

A 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:

GitHub GPG Settings

Depois:

  1. Clique em New GPG key
  2. Cole a chave pública
  3. 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 -1

Resultado esperado:

Good signature from ...

Após enviar para o GitHub:

git push

O commit aparecerá com selo:

  • ✅ Verified

Corrigindo Erro “gpg: signing failed: Not implemented”

Esse erro é comum no Windows:

gpg: signing failed: Not implemented

Normalmente acontece por:

  • incompatibilidade do Git Bash,
  • configuração incorreta do GPG,
  • formato errado da assinatura OpenPGP.

Solução

Execute:

git config --global gpg.format openpgp

Depois reinicie:

  • VS Code
  • terminal
  • Git Bash

Configuração Final Esperada

Confira tudo:

git config --global --list

Você deverá ter algo parecido com:

commit.gpgsign=true
user.signingkey=3CF8E8Dxxxxxx
gpg.program=C:/Program Files (x86)/GnuPG/bin/gpg.exe
gpg.format=openpgp

Teste Completo

Faça um teste final:

echo test >> teste.txt
git add .
git commit -m "signed commit"
git push

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


Links Oficiais