Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

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

Verifizierter Commit

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 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 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. Weitere Informationen zum Aktivieren des wachsamen Modus findest du unter „Anzeigen von Überprüfungsstatus für alle Commits“.

Das Signieren von Commits unterscheidet sich vom Abzeichnen eines Commits. Weitere Informationen zum Abzeichnen von Commits findest du unter Verwalten der Richtlinie zum 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 Ausführen von Rebases und Mergevorgängen für deine Commits.

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 überprüfen und einsehen, warum deine Commit-Signaturen möglicherweise nicht verifiziert sind. Weitere Informationen findest du unter Überprüfen des Commit- und Signaturüberprüfungsstatus.

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. Der vollständige Fingerabdruck des Schlüssels ist 5DE3 E050 9C47 EA3C F04A 42D3 4AEE 18F8 3AFD EB23.

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 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 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 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 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 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 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 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 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 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