Llaves GPG en GitHub y GitLab🔗
Tomando en cuenta el funcionamiento de GitHub, GitLab, gpg2
y gpg-agent
se puede asociar una llave GPG al
correo electrónico privado ofrecido por GitHub y GitLab para la verificación de los commits.
Los correos electrónicos privados se obtienen de https://github.com/settings/emails y https://gitlab.com/profile.
Suponiendo que los correos electrónicos sean
123456-nihilipster@users.noreply.github.com
y 654321-nihilipster@users.noreply.gitlab.com
, se pueden generar las
llaves GPG de la siguiente manera:
Para GitHub, mediante el algoritmo RSA:
[nihilipster@localhost:~]$ /usr/bin/gpg2 --full-generate-key
Your selection? 1
What keysize do you want? (2048) 4096
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y
Real name: Nihilipster
Email address: 123456-nihilipster@users.noreply.github.com
Comment: 123456-nihilipster@users.noreply.github.com
Para GitLab, mediante el algoritmo RSA:
[nihilipster@localhost:~]$ /usr/bin/gpg2 --full-generate-key
Your selection? 1
What keysize do you want? (2048) 4096
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y
Real name: Nihilipster
Email address: 654321-nihilipster@users.noreply.gitlab.com
Comment: 654321-nihilipster@users.noreply.gitlab.com
Para listar las llaves GPG y obtener su ID:
[nihilipster@localhost:~]$ /usr/bin/gpg2 --list-keys --keyid-format LONG
---------------------------------------
pub rsa4096/12345678abcdefgh ... [SC]
...
uid [ultimate] Nihilipster (123456-nihilipster@users.noreply.github.com) <123456-nihilipster@users.noreply.github.com>
sub ...
pub rsa4096/abcdefgh12345678 ... [SC]
...
uid [ultimate] Nihilipster (654321-nihilipster@users.noreply.gitlab.com) <654321-nihilipster@users.noreply.gitlab.com>
sub ...
Suponiendo que el ID de la llave GPG para GitHub sea 12345678abcdefgh
y la de GitLab sea abcdefgh12345678
, se
registran, según sea el caso, en https://github.com/settings/keys o https://gitlab.com/profile/gpg_keys.
Para GitHub, se extrae la llave pública con:
[nihilipster@localhost:~]$ /usr/bin/gpg2 --armor --export 12345678abcdefgh
Para GitLab, se extrae la llave pública con:
[nihilipster@localhost:~]$ /usr/bin/gpg2 --armor --export abcdefgh12345678
Configuración de Git🔗
La configuración de Git puede hacerse de manera global (al usuario) o bien local (al repositorio).
Se puede configurar de manera global el nombre del usuario, el programa para cifrado y la firma de commits por default:
[nihilipster@localhost:~]$ /usr/bin/git config --global user.name Nihilipster
[nihilipster@localhost:~]$ /usr/bin/git config --global gpg.program /usr/bin/gpg2
[nihilipster@localhost:~]$ /usr/bin/git config --global commit.gpgsign true
Mientras que el correo electrónico privado y el ID de la llave GPG por repositorio:
GitHub:
[nihilipster@localhost:~/github/repositor1]$ /usr/bin/git config --local user.email 123456-nihilipster@users.noreply.github.com
[nihilipster@localhost:~/github/repositor1]$ /usr/bin/git config --local user.signingkey 12345678abcdefgh
GitLab:
[nihilipster@localhost:~/gitlab/repositor1]$ /usr/bin/git config --local user.email 654321-nihilipster@users.noreply.github.com
[nihilipster@localhost:~/gitlab/repositor1]$ /usr/bin/git config --local user.signingkey abcdefgh12345678
Fuentes🔗
- https://help.github.com/en/github/authenticating-to-github/checking-for-existing-gpg-keys
- https://help.github.com/en/github/authenticating-to-github/generating-a-new-gpg-key
- https://help.github.com/en/github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account
- https://help.github.com/en/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address
- https://help.github.com/en/github/authenticating-to-github/signing-commits
- https://help.github.com/en/github/authenticating-to-github/associating-an-email-with-your-gpg-key
- https://help.github.com/en/github/authenticating-to-github/telling-git-about-your-signing-key
- https://docs.gitlab.com/ee/user/project/repository/gpg_signed_commits/