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)