DEV Community

Junior Martins
Junior Martins

Posted on • Updated on

Como habilitar a assinatura automática de commits do Git com GnuPG (GPG) no Windows

Este é um guia para habilitar git commits com assinatura GPG no GitHub.

"O GnuPG é um programa de software de criptografia híbrida porque usa uma combinação de criptografia de chave simétrica convencional por questões de velocidade e criptografia de chave pública para facilitar a troca segura de chaves, geralmente usando a chave pública do destinatário para criptografar uma chave de sessão que é usada apenas uma vez. Este modo de operação faz parte do padrão OpenPGP e faz parte do PGP desde sua primeira versão."

Wikipédia


1) Instale Gpg4win

Gpg4win pode ser baixado em www.gpg4win.org{:target="_blank"}

O Gpg4win é um pacote do GnuPG v2, que contem:

  • Kleopatra, que é um gerenciador de certificados;
  • GNU Privacy Assitant (GPA), que é uma GUI que usa GTK + GpgOL e GpgEX, que são respectivamente uma extensão para Outlook e Windows Shell.

Como o foco deste tutorial não é demonstrar a utilização no Outlook, não iremos instalar o GpgOL, portanto, na janela de "Escolha de Componentes", deixe conforme a imagem abaixo:

image

Aperte o botão seguinte e depois selecione o diretório onde os arquivos do programa Gp4win ficarão (você irá precisar desta informação mais pra frente), feito isto clique em instalar.


2) Crie uma nova key pair

Após a instalação do Gp4win, abra o programa Kleopatra:
Na janela inicial vá ao menu File > New Key Pair..., abrirá uma nova janela, nela clique no botão Create a personal OpenPGP key pair.

image

Uma nova janela solicitando algumas informações será aberta, agora basta preencher os campos com os seus dados Nome e Email e marcar a caixa Protect the generated key with a passphrase.

image

Ainda na mesma janela clique em Advanced Settings..., na nova janela que abrir, selecione RSA, marque + RSA-, e altere os valores dos selects para 4,096 bits.

No campo Valid until: escolha uma data limite para a validade da chave que será criada, no exemplo deixei a data de 03/09/2023.

image

Clique em Ok e depois em Create, feito este procedimento abrirá uma nova janela para que você digite uma senha:

image

A senha deve ter no mínimo 08 (oito) dígitos

Após digitar a senha clique em OK e aguarde até que o sistema gere sua Key Pair.

Realizado o procedimento anterior e dando tudo certo, abrirá uma nova janela com a mensagem "Key Pair Succesfully Created" contendo algumas informações sobre a nova chave criada, conforme a imagem abaixo:

image

Gerada a Kei Pair, clique em Finish.


3) Copiando a chave GPG criada

Se tudo deu certo até aqui você perceberá que na janela principal do Kleopatra vai estar aparecendo as informações básicas da sua nova chave, algo parecido com a imagem abaixo:

image

Clique duas vezes na linha que possui a nova chave gerada para abrir a janela Export, que permitirá que exportemos a chave criada. Com a janela Export aberta, clique em Export.... Abrirá uma nova janela Export - Kleopatra, selecione todo o texto e copie Ctrl+C.

image

Após copiar, clique em close e depois em close novamente.


4) Inserindo a chave GPG no Github

De posse da chave copiada no "item 3" deste tutorial, vá ao GitHub e navegue pelo menu em Settings > SHH and GPG keys e na janela que abrir procure pelo botão New GPG Key

image

Clicando em New GPG Key, abrirá uma nova janela com o campo GPG keys/ Add new, neste campo cole todo o texto que você copiou no "item 3" deste tutorial, deixando mais ou menos assim:

image

Colado o texto, cliquem em Add GPG Key. Você será redirecionado para a página SSH and GPG keys, que agora conterá as informações básicas da sua nova chave GPG criada, como na imagem abaixo:

image

💡Atenção

Na imagem acima aparace a mensagem Unverified ao lado do e-mail inserido. Isto é um alerta indicando que o e-mail não está vinculado à sua conta do GitHub, portanto, se você inserir o e-mail correto vinculado à sua conta, a mensagem de não aparecerá


5) Configurando o Git para realizar commits verificados

Abra o terminal e digite o comando:

git config --global commit.gpgsign true
Enter fullscreen mode Exit fullscreen mode

Volte na página SSH an GPG keys do GitHub e copie o valor de Key ID, o que está em azul na imagem abaixo:

O valor da sua Key ID será diferente do da imagem

image

Copiado o valor, volte ao terminal e digite o seguinte comando:

git config --global user.signingkey MEU_KEY_ID
Enter fullscreen mode Exit fullscreen mode

Substitua MEU_KEY_ID pelo valor copiado na página "SSH an GPG keys"

Feito, agora digite o comando:

git config --global gpg.program 'Disco:/caminho/do/GnuPG/bin/gpg.exe`
Enter fullscreen mode Exit fullscreen mode

🏷️Exemplo:

git config --global gpg.program 'C:/programs/GnuPG/bin/gpg.exe`
Enter fullscreen mode Exit fullscreen mode

💡 Atenção
Use o caminho completo utilizando / e não \


6) Testando o comando

Se deu tudo certo a partir de agora você será capaz de realizar commits verificados para sua conta no GitHub, para isso, faça um commit utilizando a flag -S, assim:

git commit -S -m 'Commit verificado'
Enter fullscreen mode Exit fullscreen mode

Ao clicar em enter abrirá uma nova janela solicitando a senha que foi criada no momento da geração da chave no Kleopatra. Digite a senha correta e tecle enter, que o commit será realizado.

Para finalizar, depois do commit, dê um push e seja feliz 😁

git push
Enter fullscreen mode Exit fullscreen mode

Seus commits aparecerão no histórico com uma tag verified ao lado, conforme a imagem abaixo:

image


7) Habilitando no WSL2

Para habilitar a assinatura automática de commits do Git com GnuPG (GPG) no Windows Subsystem for Linux (WSL), siga os passos abaixo:

  • 7.1 - Instale o GnuPG no WSL: Abra um terminal do WSL e execute o seguinte comando para instalar o GnuPG:
sudo apt update
sudo apt install gnupg
Enter fullscreen mode Exit fullscreen mode

Isso irá instalar o GnuPG no seu ambiente WSL.

  • 7.2 - Gere suas chaves GPG: Para assinar commits automaticamente, você precisa ter uma chave GPG. Se você já possui uma chave GPG, você pode pular esta etapa. Caso contrário, você pode gerar uma nova chave GPG usando o seguinte comando:
gpg --gen-key
Enter fullscreen mode Exit fullscreen mode

Siga as instruções do GnuPG para gerar uma nova chave GPG. Você precisará definir uma senha para sua chave GPG durante o processo.

  • 7.3 - Configure o Git para usar a chave GPG: Após gerar sua chave GPG, você precisa configurar o Git para usá-la. Para fazer isso, execute os seguintes comandos no terminal do WSL:
git config --global user.signingkey <sua_chave_gpg>
git config --global commit.gpgsign true
git config --global gpg.program gpg
Enter fullscreen mode Exit fullscreen mode

Substitua <sua_chave_gpg> pelo ID da chave GPG que você gerou na etapa anterior.

  • 7.4 - Exporte sua chave GPG pública: No terminal do WSL, você pode exportar sua chave GPG pública usando o seguinte comando:
gpg --armor --export <seu_ID_de_chave> > chave_gpg_publica.asc
Enter fullscreen mode Exit fullscreen mode
  • 7.5 - Substitua <seu_ID_de_chave> pelo ID da sua chave GPG que você deseja adicionar ao GitHub. Isso irá criar um arquivo com extensão ".asc" que contém a sua chave GPG pública.

  • 7.6 - Importe sua chave GPG no WSL: Você também precisa importar sua chave GPG no WSL para que o Git possa encontrar e usar sua chave para assinar os commits automaticamente. Para importar a chave, você pode usar o seguinte comando:

gpg --import <caminho_para_sua_chave_gpg>
Enter fullscreen mode Exit fullscreen mode

Exemplo
gpg --import chave_gpg_publica.asc

  • 7.7 - Substitua <caminho_para_sua_chave_gpg> pelo caminho completo para o arquivo da chave GPG que você exportou ou recebeu de outra fonte.

  • 7.8 - Configure sua variável de ambiente GPG_TTY: Para que a assinatura automática de commits funcione corretamente no WSL, você precisa configurar a variável de ambiente GPG_TTY. Você pode fazer isso adicionando o seguinte comando ao seu arquivo de perfil do shell (por exemplo, ~/.bashrc ou ~/.zshrc):

export GPG_TTY=$(tty)
Enter fullscreen mode Exit fullscreen mode

Isso permitirá que o GnuPG encontre o terminal correto para exibir os prompts de senha quando necessário.

Adicionando a chave do WSL ao Github

Para adicionar sua chave GPG ao GitHub, você pode seguir os passos abaixo:
Copie o conteúdo do arquivo de chave pública: Abra o arquivo de chave pública gerado (chave_gpg_publica.asc) em um editor de texto ou em um visualizador de arquivos e copie todo o conteúdo do arquivo.
Copiada a chave siga o procedimento listado no passo 4) Inserindo a chave GPG no Github deste tutorial.

Top comments (0)