Assinatura no seus commits
Leia em: 4 minutosGit é seguramente criptografado, mas não é infalível. Se tu estiver submetendo seus commits de uma rede de internet não confiável e quer ter a certeza de que seus commits esta vindo de uma fonte confiável, o Git tem a opção de assinar e verificar seus commits utilizando-se de chave GPG.
O que é GPG ou GnuPG
GnuPG é uma implementação completa e gratuíta do padrão OpenPGP definido por RFC4880 (conhecido também como PGP).
GnuPG permite criptografar e assinar seus dados e comunicações, possui um sistema de gerenciamento de chaves versáteis, bem como módulos de acessos para todos os tipos de diretórios de chave pública. GnuPG é conhecido também como GPG e possui uma linha de comando para facilitar a integração com outras aplicações.
GPG possui uma GUI para quem não se sente confortável utilizando linhas de comandos.
Gerando uma nova chave GPG
Irei mostrar passo a passo de como gerar uma chave GPG utilizando o terminal, isso é bem fácil, então vamos lá:
Primeiro instale o pacote do GPG em seu sistema operacional, se estiver no OSx e utiliza o Homebrew, execute
brew install gpg
. Se estiver no Linux utilize oapt-get install gnupg
Execute
gpg --gen-key
em seu terminal para começar o processo de criação da chave GPGDepois de rodar o comando listado acima, você começará a receber várias perguntas a fim de customizar sua configuração de sua chave, recomendo deixar tudo no padrão.
Pressione
ENTER
para aceitar o padrãoRSA and RSA
Pressione
ENTER
para aceitar o padrão do tamanho da chave4096
Pressione
ENTER
para aceitar que a chave não tenha data de expiraçãoColoque o nome que você utiliza em seus commits. Digite o mesmo nome que está no seu
~/.gitconfig
Coloque o e-mail que você utiliza em seus commits. Digite o mesmo nome que está no seu
~/.gitconfig
Digite uma frase de segurança ou apenas pressione
ENTER
Confirme a geração da chave
Com a chave gerada agora é preciso listar utilizando este comando
gpg --list-keys
. Algo parecido com o exemplo abaixo aparecerá para você. Toda chave possui um ID, e este ID é importante para requisitarmos o valor da chave. O ID pode ser identificado na linha que inicia compub
(que significa pública), no caso deste exemplo o ID éA8F99211
/Users/hubot/.gnupg/pubring.gpg
------------------------------------
pub 4096R/A8F99211 2016-04-05
uid Hubot
sub 4096R/Z832QR89 2016-04-05
Cole o ID de sua chave no seguinte comando
gpg --armor --export A8F99211
, lembre-se que no seu computador este ID sempre será diferente. Este comando mostrará o conteúdo de sua chaveCopie o valor de sua chave GPG pública que começa com
-----BEGIN PGP PUBLIC KEY BLOCK-----
e termina com-----END PGP PUBLIC KEY BLOCK-----
Adicionando sua chave pública GPG no Github
O Github a algum tempo suporta assinar os commits. Para que isto seja possível tu tem que adicionar o coneúdo desta chave nas configurações de seu perfil no Github. Isto é relativamente fácil.
- Na lado direito de cima da página do Github, clique em sua foto do perfil e depois clique em
Settings
.
- Nas configurações de usuário na barra lateral, clique em
SSH and GPG keys
- Clique em
New GPG key
- No campo
key
cole o valor copiado de sua chave GPG
- Clique em
Add GPG key
e confirme sua senha so Github para finalizar a adição
Configurando seu Git global
Agora é preciso atualizar seu ~/.gitconfig
para utilizar o ID da sua chave GPG também.
Isto é muito simples, basta executar git config --global user.signingkey <seu ID>
Assinando seus commits
Agora que tu tens sua chave GPG criado, adicionada ao Github e configurado no ~/.gitconfig
, então basta utiliza-lá na geração de seus commits ou tags.
Criando commits com assinatura
git add .
git commit -a -S -m 'my commit'
git push
Note que é preciso apenas adicionar o parâmetro -S
no comando de commit para isto funcionar.
Criando tags com assinatura
git tag -s v1.5 -m 'my signed 1.5 tag'
Note que é preciso apenas adicionar o parâmetro -s
(em minúsculo) no comando para criar tags assinadas.
Para ter certeza de que tudo funcionou basta ir no histórico de commits no seu repositório no Github e notar que seus commits agora ficaram com um indicador de que esta verificado.
Comentários:
Deixe sua dúvida, sugestão ou crítica, estou ansioso para saber tudo o que você achou sobre este post: