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."
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 é umaGUI
que usaGTK + GpgOL
eGpgEX
, que são respectivamente uma extensão paraOutlook
eWindows 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:
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
.
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
.
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
.
Clique em Ok
e depois em Create
, feito este procedimento abrirá uma nova janela para que você digite uma senha:
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:
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:
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
.
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
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:
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:
💡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
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) 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:
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
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
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
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
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>
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)
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)