Skip to main content

Informationen zur Verifizierung einer Commit-Signatur

Du kannst Tags und Commits lokal mit GPG, SSH oder S/MIME signieren. Diese Tags oder Commits werden auf GitHub Enterprise Cloud als überprüft gekennzeichnet, sodass andere Personen darauf vertrauen können, dass die Änderungen aus einer vertrauenswürdigen Quelle stammen.

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 Cloud den Commit oder das Tag als „Überprüft“ oder „Teilweise überprüft“.

Screenshot eines Commits in der Commitliste für ein Repository. „Überprüft“ ist orange umrandet.

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 Cloud 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. GitHub Enterprise Cloud zeigt Commits an, die mit einem solchen Schlüssel als „Überprüft“ signiert wurden, es sei denn, der Schlüssel wurde als kompromittiert markiert. SSH-Schlüssel bieten diese Möglichkeit nicht.

Je nachdem, ob du den wachsamen Modus aktiviert hast, weisen Commits und Tags die folgenden Überprüfungsstatus auf. Standardmäßig ist der wachsame Modus nicht aktiviert. Informationen zum Aktivieren des wachsamen Modus findest du unter Anzeigen von Überprüfungsstatus für alle deine Commits.

Das Signieren von Commits unterscheidet sich vom Abzeichnen eines Commits. Weitere Informationen zum Genehmigen von Commits findest du unter Verwalten der Richtlinie für das Abzeichnen von Commits für dein Repository.

Standardstatus

StatusBESCHREIBUNG
ÜberprüftDer Commit ist signiert, und die Signatur wurde erfolgreich überprüft.
Nicht überprüftDer Commit ist signiert, aber die Signatur konnte nicht überprüft werden.
Kein ÜberprüfungsstatusDer Commit ist nicht signiert.

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 findest du unter Informationen zu Merge-Methoden auf GitHub.

Status bei aktiviertem wachsamem Modus

StatusBESCHREIBUNG
ÜberprüftDer Commit ist signiert, die Signatur wurde erfolgreich überprüft und der Committer ist der einzige Autor, der den Wächtermodus aktiviert hat.
Teilweise  überprüftDer Commit ist signiert und die Signatur wurde erfolgreich überprüft, aber der Commit hat einen Autor, der a) nicht der Committer ist und b) den Wächtermodus aktiviert hat. In diesem Fall garantiert die Commitsignatur nicht die Zustimmung des Autors, daher wird der Commit nur teilweise verifiziert.
Nicht überprüftEine beliebige der folgenden Aussagen trifft zu:
– Der Commit ist signiert, aber die Signatur konnte nicht überprüft werden.
– Der Commit ist nicht signiert, und der Committer hat den Wächtermodus aktiviert.
– Der Commit ist nicht signiert, und ein Autor hat den Wächtermodus aktiviert.

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 findest du unter Informationen zu geschützten Branches.

Du kannst den Verifizierungsstatus deiner signierten Commits oder Tags auf GitHub Enterprise Cloud überprüfen und einsehen, warum deine Commit-Signaturen möglicherweise nicht verifiziert sind. Weitere Informationen findest du unter Verifizierungsstatus der Commit- und Tag-Signaturen.

GitHub verwendet GPG automatisch, um Commits zu signieren, die du über die Webschnittstelle vornimmst. Die von GitHub signierten Commits haben den Status „Überprüft“. Du kannst die Signatur mithilfe des öffentlichen Schlüssels, der unter https://github.com/web-flow.gpg verfügbar ist, lokal überprüfen.

Du kannst optional festlegen, dass GitHub in GitHub Codespaces durchgeführte Commits mit GPG signiert. Weitere Informationen zum Aktivieren der GPG-Überprüfung für deine Codespaces findest du unter Verwalten der GPG-Überprüfung für GitHub Codespaces.

GPG-Verifizierung einer Commit-Signatur

Du kannst GPG verwenden, um Commits mit einem GPG-Schlüssel zu signieren, den du selbst generierst.

GitHub Enterprise Cloud 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 GitHub.com hinzugefügt hast.

Um Commits mit GPG zu signieren und diese Commits auf GitHub Enterprise Cloud verifizieren zu lassen, führe die folgenden Schritte aus:

  1. Nach vorhandenen GPG-Schlüsseln suchen
  2. Einen neuen GPG-Schlüssel generieren
  3. Hinzufügen eines GPG-Schlüssels zu deinem GitHub-Konto
  4. Git über den Signaturschlüssel informieren
  5. Commits signieren
  6. 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 Cloud 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 Cloud 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 GitHub.com hinzugefügt hast.

Hinweis: 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 Cloud zu verifizieren:

  1. Suche nach vorhandenen SSH-Schlüsseln
  2. Generieren eines neuen SSH-Schlüssels
  3. Hinzufügen eines SSH-Schlüssels zu deinem GitHub-Konto
  4. Git über den Signaturschlüssel informieren
  5. Commits signieren
  6. 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 Cloud 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.

Hinweis: 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 Cloud verifizieren zu lassen, führe die folgenden Schritte aus:

  1. Git über den Signaturschlüssel informieren
  2. Commits signieren
  3. Tags signieren

Du musst deinen öffentlichen Schlüssel nicht auf GitHub Enterprise Cloud hochladen.

Signaturverifizierung für Bots

Organisationen und GitHub Apps, bei denen Commit-Signaturen vorgeschrieben sind, können Bots für das Signieren von Commits verwenden. Wenn ein Commit oder Tag eine Bot-Signatur hat, die kryptografisch verifiziert werden kann, wird der Commit oder das Tag von GitHub Enterprise Cloud als verifiziert gekennzeichnet.

Die Signaturverifizierung für Bots funktioniert nur, wenn die Anforderung als GitHub App oder Bot verifiziert und authentifiziert ist und keine benutzerdefinierten Informationen zum Autor, zum Beitragenden oder zur Signatur aufweist, also z. B. keine Commits-API.

Weiterführende Themen