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. 😎

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay