Informationen zur Verifizierung einer Commit-Signatur
Du kannst Commits und Tags lokal signieren, um anderen Personen Sicherheit in Bezug auf den Ursprung einer vorgenommenen Änderung zu geben. Wenn ein Commit oder Tag eine GPG-, SSH- oder S/MIME-Signatur aufweist, die kryptografisch verifizierbar ist, markiert GitHub Enterprise Server den Commit oder das Tag als „Überprüft“.
Wenn ein Commit oder ein Tag eine Signatur aufweist, die nicht verifiziert werden kann, markiert GitHub Enterprise Server den Commit oder das Tag als „Nicht überprüft“.
Für die meisten Einzelbenutzer ist GPG oder SSH die beste Wahl, um Commits zu signieren. S/MIME-Signaturen werden normalerweise im Kontext einer größeren Organisation benötigt. SSH-Signaturen sind am einfachsten zu generieren. Du kannst sogar deinen vorhandenen Authentifizierungsschlüssel in GitHub Enterprise Server hochladen, um ihn auch als Signaturschlüssel zu verwenden. Das Generieren eines GPG Signaturschlüssels ist aufwändiger als das Generieren eines SSH-Schlüssels, aber GPG bietet Funktionen, die SSH nicht bereitstellt. Ein GPG-Schlüssel kann ablaufen oder widerrufen werden, wenn er nicht mehr verwendet wird. Die GPG-Signatur kann Informationen über das Ablaufen oder Widerrufen enthalten.
Signaturüberprüfung für das Ausführen von Rebases und Mergevorgängen
Wenn du die Option Rebase und Merge für einen Pull Request verwendest, ist es wichtig zu wissen, dass die Commits im Headbranch ohne Überprüfung der Commitsignatur dem Basisbranch hinzugefügt werden. Wenn du diese Option verwendest, erstellt GitHub einen geänderten Commit unter Verwendung der Daten und des Inhalts des ursprünglichen Commits. Das bedeutet, dass GitHub diesen Commit nicht wirklich erstellt hat und ihn daher nicht als generischer Systembenutzer signieren kann. GitHub hat keinen Zugriff auf die privaten Signaturschlüssel des Committers und kann daher den Commit nicht im Auftrag des Benutzers signieren.
Ein Workaround dafür ist, dass du lokal einen Rebase- und Mergevorgang durchführst und die Änderungen dann in den Basisbranch des Pull Requests pushst.
Weitere Informationen finden Sie unter Informationen zu Merge-Methoden auf GitHub.
Repository-Administratoren können die obligatorische Commit-Signatur auf einem Branch erzwingen, um alle Commits zu blockieren, die nicht signiert und verifiziert sind. Weitere Informationen finden Sie unter Informationen zu geschützten Branches.
Du kannst den Verifizierungsstatus deiner signierten Commits oder Tags auf GitHub Enterprise Server überprüfen und einsehen, warum deine Commit-Signaturen möglicherweise nicht verifiziert sind. Weitere Informationen findest du unter Verifizierungsstatus der Commit- und Tag-Signaturen.
Wenn ein Websiteadministrator die Webcommitsignierung aktiviert hat, verwendet GitHub Enterprise Server zum Signieren von Commits, die Sie über die Webschnittstelle vornehmen, automatisch GPG. Die von GitHub Enterprise Server signierten Commits haben den Status „Überprüft“. Du kannst die Signatur mithilfe des öffentlichen Schlüssels, der unter https://HOSTNAME/web-flow.gpg
verfügbar ist, lokal überprüfen. Weitere Informationen finden Sie unter Konfigurieren der Webcommitsignierung.
GPG-Verifizierung einer Commit-Signatur
Du kannst GPG verwenden, um Commits mit einem GPG-Schlüssel zu signieren, den du selbst generierst.
GitHub Enterprise Server verwendet OpenPGP-Bibliotheken, um zu bestätigen, dass deine lokal signierten Commits und Tags kryptographisch mit einem öffentlichen Schlüssel verifizierbar sind, den du deinem Konto auf Ihre GitHub Enterprise Server-Instance hinzugefügt hast.
Um Commits mit GPG zu signieren und diese Commits auf GitHub Enterprise Server verifizieren zu lassen, führe die folgenden Schritte aus:
- Nach vorhandenen GPG-Schlüsseln suchen
- Einen neuen GPG-Schlüssel generieren
- Hinzufügen eines GPG-Schlüssels zu deinem GitHub-Konto
- Git über den Signaturschlüssel informieren
- Commits signieren
- Tags signieren
SSH-Verifizierung einer Commitsignatur
Du kannst SSH verwenden, um Commits mit einem SSH-Schlüssel zu signieren, den du selbst generierst. Weitere Informationen findest du in der Git-Referenzdokumentation zu user.Signingkey
. Wenn du bereits einen SSH-Schlüssel verwendest, um dich bei GitHub Enterprise Server zu authentifizieren, kannst du diesen Schlüssel erneut hochladen, um ihn auch als Signaturschlüssel zu verwenden. Es gibt keine Begrenzung für die Anzahl von Signaturschlüsseln, die du zu deinem Konto hinzufügen kannst.
GitHub Enterprise Server verwendet ssh_data, eine Open-Source-Ruby-Bibliothek, um zu bestätigen, dass deine lokal signierten Commits und Tags kryptografisch mit einem öffentlichen Schlüssel verifizierbar sind, den du deinem Konto auf Ihre GitHub Enterprise Server-Instance hinzugefügt hast.
Note
Die SSH-Signaturüberprüfung ist in Git 2.34 oder höher verfügbar. Informationen zum Aktualisieren deiner Version von Git findest du auf der Git-Website.
Führe die folgenden Schritte aus, um Commits mit SSH zu signieren und diese Commits auf GitHub Enterprise Server zu verifizieren:
- Suche nach vorhandenen SSH-Schlüsseln
- Generieren eines neuen SSH-Schlüssels
- Hinzufügen eines SSH-Schlüssels zu deinem GitHub-Konto
- Git über den Signaturschlüssel informieren
- Commits signieren
- Tags signieren
S/MIME-Verifizierung einer Commit-Signatur
Du kannst S/MIME verwenden, um Commits mit einem von deiner Organisation ausgegebenen X.509-Schlüssel zu signieren.
GitHub Enterprise Server verwendet das Debian-CA-Zertifikatpaket, denselben Trust Store, der auch von Mozilla-Browsern verwendet wird, um zu bestätigen, dass deine lokal signierten Commits und Tags kryptographisch mit einem öffentlichen Schlüssel in einem vertrauenswürdigen Stammzertifikat überprüft werden können.
Note
Die S/MIME-Signaturüberprüfung ist in Git 2.19 oder höher verfügbar. Informationen zum Aktualisieren deiner Version von Git findest du auf der Git-Website.
Um Commits mit S/MIME zu signieren und diese Commits auf GitHub Enterprise Server verifizieren zu lassen, führe die folgenden Schritte aus:
Du musst deinen öffentlichen Schlüssel nicht auf GitHub Enterprise Server hochladen.