Bald wird Git-2.34 veröffentlicht und eine der anstehenden Erweiterungen scheint die Möglichkeit zum Signieren von Git-Changes mittels SSH-Key zu sein. Grund genug zu schauen, ob wir nicht auch “normale” Dateien mit SSH-Key signieren können.
TLDR:
- Signieren:
ssh-keygen -Y sign -n file -f (privater-schluessel) (dateiname)
–> erzeugt ‘(dateiname).sig’ - Prüfen:
echo "(name) (oeffentlicher-schluessel)" >/tmp/allowed-signers-file && ssh-keygen -Y verify -n file -f /tmp/allowed-signers-file -I "(name)" -s "(dateiname).sig" <"(dateiname)"
–> Ausgabe: ‘Good “file” signature for uli with ED25519-SK key SHA256:PrEG0QR36EEttU+oZGFmMrwS95UUqQEq51D/XLad7aQ’
Signieren
Ich teste das Signieren mit einem SSH-Key, der
- an einen SoloKey gebunden ist (= der SSH-Key funktioniert nicht ohne den SoloKey)
- bei der Verwendung das Drücken des Knopfes am SoloKey erfordert (= ohne manuelle Interaktion des Nutzers ist kein Signieren möglich)
Signaturen dieser Art kann nur jemand erzeugen, der
- meinen privaten SSH-Schlüssel zur Verfügung hat
- UND dessen Passphrase kennt
- UND meinen SoloKey zur Verfügung hat
- UND den Knopf des SoloKeys drücken kann
Ich möchte die Datei “ventoy-1.0.60-linux.tar.gz” signieren. Dazu brauche ich:
- Die Datei selbst: ventoy-1.0.60-linux.tar.gz
- Meinen privaten SSH-Schlüssel: ~/.ssh/mein-ssh-key-mit-solokey
- Meinen SoloKey, eingesteckt am Rechner und “greifbar”
Das Signieren geht dann so:
1 2 3 |
|
Prüfen
Das Prüfen einer Signatur geht einfacher. Ich benötige:
- Den öffentlichen Teil des SSH-Schlüssels, der zum Signieren verwendet wurde: ~/.ssh/mein-ssh-key-mit-solokey.pub
- Die Signaturdatei: ventoy-1.0.60-linux.tar.gz.sig
- Die signierte Datei: ventoy-1.0.60-linux.tar.gz
Der SoloKey wird nicht benötigt!
Das Prüfen geht dann so:
1 2 3 4 5 6 |
|
Bei einer fehlerhaften Signatur sieht es so aus:
1 2 3 4 5 6 |
|
Links
Änderungen
- 2021-11-09 – Erste Version