Firma dei Commit in Git
Firmare i commit in Git è una pratica importante per garantire l’integrità e l’autenticità del codice. Quando firmi un commit, stai criptograficamente attestando che sei l’autore della modifica e che il commit non è stato alterato. Questo è particolarmente utile in progetti open source o in team di sviluppo dove la sicurezza e la trasparenza sono fondamentali. In questa guida, esploreremo come configurare la firma GPG per i commit in Git, come firmare i commit e come verificare la firma di commit in un repository.
Cos’è la Firma dei Commit in Git?
La firma dei commit utilizza la crittografia a chiave pubblica per aggiungere una firma digitale ai commit. Questa firma conferma che il commit è stato creato da un autore specifico e che non è stato modificato dopo essere stato firmato. Git utilizza il sistema GPG (GNU Privacy Guard) per gestire le chiavi crittografiche e le firme digitali.
Configurare GPG per Git
Prima di poter firmare i commit, è necessario configurare GPG e collegarlo a Git. Se non hai già una chiave GPG, dovrai crearne una.
Installare GPG
Se non hai GPG installato, puoi installarlo utilizzando i seguenti comandi:
-
macOS (usando Homebrew):
brew install gnupg
-
Ubuntu/Debian:
sudo apt-get install gnupg
-
Windows:
Scarica e installa Gpg4win da gpg4win.org.
Generare una Chiave GPG
Dopo aver installato GPG, puoi generare una nuova chiave GPG utilizzando il comando:
gpg --full-generate-key
Segui le istruzioni sullo schermo per configurare la tua chiave GPG. Durante il processo, ti verrà chiesto di specificare il tipo di chiave, la lunghezza della chiave, e la scadenza. Usa un indirizzo email associato al tuo account Git per collegare la chiave a Git.
Visualizzare l’ID della Chiave GPG
Una volta creata la chiave, puoi visualizzare l’ID della tua chiave GPG con:
gpg --list-secret-keys --keyid-format LONG
L’output dovrebbe somigliare a questo:
/Users/tuoutente/.gnupg/secring.gpg
-------------------------------
sec rsa4096/ABCDEF1234567890 2023-08-28 [SC]
1234ABCDEF5678901234567890ABCDEF12345678
uid Il Tuo Nome <tuoindirizzo@email.com>
ssb rsa4096/0987654321FEDCBA 2023-08-28 [E]
L’ID della chiave è la stringa di 16 caratteri dopo rsa4096/
(in questo esempio, ABCDEF1234567890
).
Configurare Git per Usare la Chiave GPG
Dopo aver ottenuto l’ID della tua chiave GPG, configuralo in Git:
git config --global user.signingkey ABCDEF1234567890
Configurare Git per Firmare Automaticamente i Commit
Puoi configurare Git per firmare automaticamente tutti i commit eseguendo:
git config --global commit.gpgSign true
Firmare i Commit in Git
Ora che hai configurato GPG e Git, puoi iniziare a firmare i tuoi commit.
Firmare un Commit
Per firmare un commit, usa l’opzione -S
con il comando git commit
:
git commit -S -m "Il tuo messaggio di commit"
Quando esegui questo comando, Git utilizzerà la tua chiave GPG per firmare il commit. Potrebbe esserti richiesto di inserire la passphrase della tua chiave GPG.
Firmare i Tag
Puoi anche firmare i tag in Git usando l’opzione -s
:
git tag -s v1.0.0 -m "Versione 1.0.0"
Questo comando crea un tag firmato per il commit corrente.
Verificare la Firma di un Commit
Per verificare la firma di un commit, usa il comando git log
con l’opzione --show-signature
:
git log --show-signature
L’output mostrerà se il commit è firmato e la validità della firma, come segue:
commit abcdef1234567890
gpg: Signature made Mon 28 Aug 2023 12:00:00 PM CEST
gpg: using RSA key ABCDEF1234567890
gpg: Good signature from "Il Tuo Nome <tuoindirizzo@email.com>"
Questo conferma che il commit è stato firmato con successo e che la firma è valida.
Pubblicare la Chiave GPG
Per permettere ad altri di verificare la firma dei tuoi commit, devi rendere pubblica la tua chiave GPG. Puoi farlo caricandola su un keyserver pubblico:
gpg --send-keys ABCDEF1234567890 --keyserver keyserver.ubuntu.com
In alternativa, puoi aggiungere la tua chiave GPG al tuo profilo GitHub:
-
Copia la tua chiave pubblica:
gpg --armor --export ABCDEF1234567890
-
Vai su GitHub, nelle impostazioni del tuo account, e aggiungi la chiave GPG sotto “SSH and GPG keys”.
Best Practices per la Firma dei Commit
- Mantieni Sicura la Tua Chiave GPG: Proteggi la tua chiave GPG con una passphrase forte e conserva la chiave privata in un luogo sicuro.
- Firma Tutti i Commit Sensibili: Firma i commit che includono cambiamenti critici o rilasci importanti per garantirne l’integrità.
- Verifica le Chiavi GPG di Altri Collaboratori: Prima di fidarti di commit firmati da altri, verifica la loro chiave GPG per assicurarti che sia autentica.
Risolvere Problemi Comuni
Commit Non Firmati Correttamente
Se noti che i commit non sono firmati, verifica che l’opzione commit.gpgSign
sia attivata:
git config --global commit.gpgSign
Assicurati inoltre che Git stia utilizzando la chiave GPG corretta.
Errori Durante la Firma
Se incontri errori durante la firma dei commit, verifica che GPG sia installato correttamente e che la chiave GPG non sia scaduta o revocata. Puoi rigenerare una nuova chiave se necessario.
Conclusione
La firma dei commit in Git è una misura di sicurezza che garantisce l’integrità e l’autenticità del codice. Configurando e utilizzando GPG per firmare i tuoi commit, puoi proteggere il tuo lavoro e migliorare la fiducia nei progetti collaborativi. Seguendo le best practices e risolvendo i problemi comuni descritti in questa guida, sarai in grado di implementare la firma dei commit in modo efficace e sicuro.