Skip to content

Instantly share code, notes, and snippets.

@juniormartinxo
Last active April 2, 2023 14:07
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save juniormartinxo/628646ad63c05fd9458130cf2c575786 to your computer and use it in GitHub Desktop.
Save juniormartinxo/628646ad63c05fd9458130cf2c575786 to your computer and use it in GitHub Desktop.
[WINDOWS] Como habilitar a assinatura automática de commits do Git com GnuPG

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

Disponível em: https://dev.to/juniormartinxo/como-habilitar-a-assinatura-automatica-de-commits-do-git-com-gnupg-gpg-no-windows-26o9

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

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

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`

🏷️Exemplo:

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

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


6) Último passo - 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'

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

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

image

@rodrigocananea
Copy link

Muito bom a explicação, uma coisa que me perdi um pouco aqui e poderia arrumar ai, seria a parte de rodar este comando:
`git config --global gpg.program 'Dico:/caminho/do/GnuPG/bin/gpg.exe``

Pode informar que o 'gpg.exe' pode estar no diretório bin associado ao Path das variaveis globais do Windows como foi no meu caso aqui.
C:\Program Files (x86)\Gpg4win\..\GnuPG\bin

@lucasdsalves
Copy link

Excelente explicação!!
Obrigado por compartilhar! 😃

@juniormartinxo
Copy link
Author

Pode informar que o 'gpg.exe' pode estar no diretório bin associado ao Path das variaveis globais do Windows como foi no meu caso aqui.

Obrigado pela dica @rodrigocananea

@juniormartinxo
Copy link
Author

Excelente explicação!! Obrigado por compartilhar! 😃

Obrigado, :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment