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- 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“.
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.
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 About protected 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 du über die Webschnittstelle vornimmst, 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 findest du 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 deine GitHub Enterprise Server-Instanz 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
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.
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 Server verifizieren zu lassen, führe die folgenden Schritte aus:
Du musst deinen öffentlichen Schlüssel nicht auf GitHub Enterprise Server hochladen.