Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
nitrokey:arch:start [13.04.2025 17:16. ] – [Nitrokey Start und Secure Shell] django | nitrokey:arch:start [14.04.2025 17:55. ] (aktuell) – [Unterzeichnung von Commits] django | ||
---|---|---|---|
Zeile 1078: | Zeile 1078: | ||
Anschliessend lassen sich Verbindungen zu unseren Remote-Systemen erst wieder aufbauen, wenn der GPG-Agent geladen und die Karte nach Eingabe der PIN entsperrt wurde! | Anschliessend lassen sich Verbindungen zu unseren Remote-Systemen erst wieder aufbauen, wenn der GPG-Agent geladen und die Karte nach Eingabe der PIN entsperrt wurde! | ||
+ | |||
+ | ==== Nitrokey Start und Git/Gitlab ==== | ||
+ | |||
+ | <WRAP center round important 80%> | ||
+ | Git ist an sich kryptographisch sicher, so dass Änderungen sicher nachprüfbar nachverfolgt werden können. Was damit aber noch nicht sichergestellt werden kann, stammt die Änderung auch wirklich von der Person, der wir vertrauen! Git unterstützt hier ein paar Möglichkeiten die Arbeiten an einem Repository zu unterschreiben und auch zu überprüfen. | ||
+ | </ | ||
+ | |||
+ | === GPG Key-ID ermitteln === | ||
+ | Zunächst holen wir uns die Key-ID unseres Users. | ||
+ | $ gpg2 -K | ||
+ | < | ||
+ | ------------------------------- | ||
+ | sec> | ||
+ | 2C082445CDFB72DECD650350610ED9AEE553353F | ||
+ | Card serial no. = FFFE 43243711 | ||
+ | uid | ||
+ | ssb> | ||
+ | ssb> | ||
+ | |||
+ | Die Key-ID unseres Adminusers **''< | ||
+ | |||
+ | === Git konfigurieren === | ||
+ | |||
+ | Nun können wir Git konfigurieren, | ||
+ | $ git config --global user.signingkey 610ED9AEE553353F! | ||
+ | |||
+ | Am besten aktivieren wir zusätzlich auch noch die Option, dass automatisch __alle__ Commits automatisch signiert werden. | ||
+ | $ git config --local commit.gpgsign true | ||
+ | |||
+ | |||
+ | === Unterzeichnung von Commits === | ||
+ | Wir sind nun in der Lage einzelne Commits zu unterschreiben, | ||
+ | < | ||
+ | <font style=" | ||
+ | 20:13 $ git commit -S -m "AIDE 19.0 - auf konfigurierbaren Timer umgestellt" | ||
+ | [AIDE-19.0 4c03596] AIDE 19.0 - auf konfigurierbaren Timer umgestellt | ||
+ | 6 files changed, 11 insertions(+), | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === Unterschrift von Commits anzeigen === | ||
+ | Zum Anzeigen der Signaturen verwenden wir die Option **'' | ||
+ | < | ||
+ | <font style=" | ||
+ | 21:01 $ git log --show-signature -1 | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | gpg: using EDDSA key 2C082445CDFB72DECD650350610ED9AEE553353F | ||
+ | gpg: Good signature from " | ||
+ | Author: django < | ||
+ | Date: Sun Apr 13 20:14:51 2025 +0200 | ||
+ | |||
+ | AIDE 19.0 - auf konfigurierbaren Timer umgestellt | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Optional kann man mit der Option **'' | ||
+ | < | ||
+ | <font style=" | ||
+ | 21:18 $ git log --pretty=" | ||
+ | 4c03596 G django | ||
+ | 8f04a39 N Django BOfH Merge branch ' | ||
+ | cdff19c N django | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Hier sehen wir, dass __**nur**__ der Commit mit der ID **'' | ||
+ | |||
+ | === PGP-Public-Key und GitLab === | ||
+ | Damit die signierten Commits nun auch in Gitlab überprüft werden können, ist es nötig dass der öffentliche Schlüssel beim Gitlab-Konto hinterlegt wird. Hierzu speichern wir den PGP-Public-Key beim Menüpunkt | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Bei der Anzeige der Commits in der GitLab Web-UI wird nun mit der Anzeige **Verfied Commit** entsprechend angezeigt, wenn der Commit entsprechend signiert wurde. Somit können wir zweifelsfrei feststellen, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | === Zusammenfassung === | ||
+ | |||
+ | <WRAP center round tip 80%> | ||
+ | Ja, Commits oder auch Tags mit einer PGP-Signatur zu versehen, ist sicherlich eine gute und valide Idee. Allerdings nutzt dies wenig wenn nicht alle Beteiligten verstanden und verinnerlicht haben, warum dies in den Standardworkflows zu integrieren und umzusetzen ist. Hierzu ist es wichtig dass zum einen **alle Team-Mitglieder** über einen aktuellen und benutzbaren PGP-Schlüssel verfügen und ihre lokale Git-Umgebung entsprechend konfiguriert haben, dass eben **alle** Commits entsprechend automatisch signiert werden. | ||
+ | </ | ||
+ | |||
+ | |||