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.
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
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
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
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
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
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"
Agradeço a leitura e até a próxima. 😎
Top comments (0)