DEV Community

Cover image for ASSINANDO COMMITS NO WINDOWS E PUBLICANDO NO GITHUB
Marks Duarte
Marks Duarte

Posted on

ASSINANDO COMMITS NO WINDOWS E PUBLICANDO NO GITHUB

Como segurança nunca é demais, vamos aprender como assinar nossos commits usando chaves GPG para garantir a integridade e confiabilidade do autor.

Instalando GPG no Windows

Para facilitar a criação das nossas chaves, podemos instalar um cli chamado gnupg.

https://www.gnupg.org/download/

Gerando uma nova chave GPG

O GitHub, GitLab e Azure Devops suportam vários formatos de chaves, tais como:

  • RSA
  • ElGamal
  • DSA
  • ECDH
  • ECDSA
  • EdDSA

Feita a instalação do gnupg na versão 2.1.17+, execute o comando:

gpg --full-generate-key
Enter fullscreen mode Exit fullscreen mode

Especifique qual tipo de chave deseja gerar, seu tamanho e o tempo de validade, nome de usuário, e-mail e senha de criptografia.

Atente-se ao fato de que o e-mail informado deve ser o mesmo utilizado no GitHub e etc.

Liste as chaves armazenadas e copie o ID da chave que desejada:
O ID é o código 3AA5C34371567BD2, como no exemplo abaixo.

gpg --list-secret-keys --keyid-format=long

$ gpg --list-secret-keys --keyid-format=long
/Users/marks/.gnupg/secring.gpg
------------------------------------
sec   4096R/3AA5C34371567BD2 2024-02-20 [expires: 2024-03-20]
uid                          Marks <marks@example.com>
ssb   4096R/4BB6D45482678BE3 2024-02-20
Enter fullscreen mode Exit fullscreen mode

Passe o ID copiado como parâmetro do comando que imprime a chave pública que deverá ser informada no GitHub:

gpg --armor --export 3AA5C34371567BD2
# Imprime a chave GPG em formato ASCII
Enter fullscreen mode Exit fullscreen mode

Copie todo o texto começando com

-----BEGIN PGP PUBLIC KEY BLOCK-----

e terminando com

----END PGP PUBLIC KEY BLOCK-----.

Agora acesse sua conta no github, vá até configurações > SSH and GPG keys e adicione a chave ASCII gerada.

Configurando o GIT

Antes de configurar o git, vamos garantir que não exista um formato de assinatura previamente informado.

git config --global --unset gpg.format
Enter fullscreen mode Exit fullscreen mode

Agora podemos configurá-lo para assinar nossos commits de forma global ou local:

git config --global user.signingkey 3AA5C34371567BD2
git config --local user.signingkey 3AA5C34371567BD2
Enter fullscreen mode Exit fullscreen mode

Lembre-se de copiar o ID da chave ou listar novamente com gpg --list-secret-keys --keyid-format=long

Agora faça um commit assinado com o comando:

git commit -S -m "message"

Opcionalmente, podemos configurar o Git para assinar todos os commits por padrão, com o comando: git config --global commit.gpgsign true

Caso ocorra o erro signing failed: No secret key, informe para o git o path do gpg instalado:

gpgconf
gpg:OpenPGP:C%3a\Program Files (x86)\gnupg\bin\gpg.exe
gpgsm:S/MIME:C%3a\Program Files (x86)\gnupg\bin\gpgsm.exe
keyboxd:Public Keys:C%3a\Program Files (x86)\gnupg\bin\keyboxd.exe
gpg-agent:Private Keys:C%3a\Program Files (x86)\gnupg\bin\gpg-agent.exe
scdaemon:Smartcards:C%3a\Program Files (x86)\gnupg\bin\scdaemon.exe
dirmngr:Network:C%3a\Program Files (x86)\gnupg\bin\dirmngr.exe
pinentry:Passphrase Entry:C%3a\Program Files (x86)\gnupg\bin\pinentry-basic.exe


git config --global gpg.program "C:\Program Files (x86)\gnupg\bin\gpg.exe"
Enter fullscreen mode Exit fullscreen mode

Agradeço a leitura e até a próxima. 😎

Top comments (0)