DEV Community

Cover image for Assinatura de commits
William Koller
William Koller

Posted on • Edited 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.

Top comments (2)

Collapse
 
micalevisk profile image
Micael Levi L. C.

muito bom! Imagino seja possível adicionar isso por repositório, né? em vez de deixar global

Collapse
 
williamkoller profile image
William Koller • Edited

da sim, só adicionar sem o --global