Il caso per la firma SSH
GPG e potente ma operativamente doloroso. Da Git 2.34, e possibile firmare commit e tag con le chiavi SSH gia usate per il push. Niente keyring, niente giochi di passphrase.
Setup
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true
git config --global tag.gpgsign true
File degli allowed signers
cat > ~/.config/git/allowed_signers <<EOF
[email protected] ssh-ed25519 AAAA... alice
[email protected] ssh-ed25519 AAAA... bob
EOF
git config --global gpg.ssh.allowedSignersFile ~/.config/git/allowed_signers
Verifica
git log --show-signature
git verify-commit HEAD
git verify-tag v1.0.0
Chiavi hardware
OpenSSH supporta chiavi FIDO/U2F (ssh-keygen -t ed25519-sk).
Revoca
git config --global gpg.ssh.revocationFile ~/.config/git/revoked_keys
Errori comuni
Email non corrispondenti tra autore del commit e voce in allowed signers. Puntare user.signingkey a un percorso di chiave privata; serve il .pub.
Ambienti misti
Commit firmati SSH e GPG possono coesistere. I verificatori necessitano di entrambi.