DEV Community

Cover image for Assinatura de commits
William Koller
William Koller

Posted on • Updated on

Assinatura de commits

Como conseguimos garantir que somos nós mesmos que fazemos os commits?!

Qualquer pessoa pode alterar a configuração do git, colocar seu e-mail e dizer que foi você que subiu aquele commit.

Para assinar commits, iremos ver o GNUPG.

Nesse link: gnupg vemos que GNUPG é The GNU Privacy Guard.

É uma implementação completa e gratuita do padrão OpenPGP conforme definido pelo RFC4880 (também conhecido como PGP. O GnuPG permite criptografar e assinar dados e comunicações; possui um sistema de gerenciamento de chaves versátil, juntamente com módulos de acesso para todos os tipos de diretórios de chaves públicas. GnuPG, também conhecido como GPG, é uma ferramenta de linha de comando com recursos para facilitar a integração com outros aplicativos. O GnuPG também oferece suporte para S/MIME e Secure Shell (ssh).

Instalação no linux

sudo apt update 
sudo apt install gnupg
Enter fullscreen mode Exit fullscreen mode

Iremos verificar se existe alguma chave criada no nosso computador.

gpg --list-secret-key --keyid-form LONG
Enter fullscreen mode Exit fullscreen mode

Image description

Vamos criar a nossa chave

gpg --full-generate-key
Enter fullscreen mode Exit fullscreen mode
  1. Selecionamos (1) para usarmos RSA
  2. 4096 bits long
  3. y
  4. quanto tempo quer que seja valido a chave: 1y
  5. y
  6. Real name: seu nome Email address: seuemail@mail.com
  7. selecionar O para salvar e sair.
  8. criar uma senha no seu computador para ter acesso a chave.

Image description

Iremos verificar a chave criada.

gpg --list-secret-key --keyid-form LONG
Enter fullscreen mode Exit fullscreen mode

Image description

Com esse retorno:

sec   rsa4096/1F64329A378F71EE 2022-06-17 [SC] [expires: 2023-06-17]
      8EF31698FB71ACAC945C4A3E1F64329A378F71EE
uid                 [ultimate] William Koller <williamkoller404@gmail.com>
ssb   rsa4096/43D2BB51F0668C4B 2022-06-17 [E] [expires: 2023-06-17]
Enter fullscreen mode Exit fullscreen mode

Iremos copiar o sec => 1F64329A378F71EE que é o id para pegarmos a chave publica e adicionar no github.

 gpg --armor --export 1F64329A378F71EE
Enter fullscreen mode Exit fullscreen mode

Pegamos a chave e adicionamos no github em GPG Keys

Image description

Agora iremos configurar o git para assinar commit e tags

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

Criei esse projeto no github para exemplificar

Image description

Precisamos adicionar a nossa chave no git

git config --global user.signingkey 1F64329A378F71EE
Enter fullscreen mode Exit fullscreen mode

Quando formos commitar irá aparece essa tela para confirmamos a senha

Image description

Agora iremos verificar se o git esta vinculado ao nosso commit

git log --show-signature -1
Enter fullscreen mode Exit fullscreen mode

Image description

Vamos no repositorio verificar se o usuário está verificado, clicamos hash do commit.

Image description

Ultimo passo

sudo nano ~/.gnupg/gpg.conf
Enter fullscreen mode Exit fullscreen mode

E adicionar use-agent e salvar e em seguida roda esse comandogpgconf --launch gpg-agent

Pronto agora temos a verificação de assinatura de commits.

Espero ter ajudado.

Latest comments (0)