# Git über Ihren Signaturschlüssel informieren

Um Commits lokal zu signieren, müssen Sie Git darüber informieren, dass es einen GPG-, SSH- oder X.509-Schlüssel gibt, den Sie verwenden möchten.

## Git deinen GPG-Schlüssel mitteilen

<div class="ghd-tool mac">

Wenn du einen GPG-Schlüssel verwendest, der mit deiner Committer-Identität und deiner verifizierten E-Mail-Adresse übereinstimmt, die mit deinem Konto auf GitHub.com verknüpft ist, kannst du mit dem Signieren von Commits und Tags beginnen.

> \[!NOTE]
> Wenn du keinen GPG-Schlüssel hast, der deiner Committer-Identität entspricht, musst du mit einem bestehenden Schlüssel eine E-Mail-Adresse verknüpfen. Weitere Informationen finden Sie unter [Verknüpfen einer E-Mail-Adresse mit deinem GPG-Schlüssel](/de/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key).

Wenn du mehrere GPG-Schlüssel hast, musst du Git mitteilen, welcher zu verwenden ist.

1. Öffne <span class="platform-mac">Terminal</span><span class="platform-linux">Terminal</span><span class="platform-windows">Git Bash</span>.

2. Wenn du Git zuvor so konfiguriert hast, dass beim Signieren mit `--gpg-sign` ein anderes Schlüsselformat verwendet wird, hebe diese Konfiguration auf, damit das Standardformat `openpgp` verwendet wird.

   ```shell
   git config --global --unset gpg.format
   ```

3. Verwende den Befehl `gpg --list-secret-keys --keyid-format=long`, um die Langform der GPG-Schlüssel aufzulisten, für die du sowohl über einen öffentlichen als auch einen privaten Schlüssel verfügst. Zum Signieren von Commits oder Tags ist ein privater Schlüssel erforderlich.

   ```shell copy
   gpg --list-secret-keys --keyid-format=long
   ```

   > \[!NOTE]
   > Bei einigen GPG-Installationen unter Linux musst du stattdessen möglicherweise `gpg2 --list-keys --keyid-format LONG` verwenden, um eine Liste deiner vorhandenen Schlüssel anzuzeigen. In diesem Fall musst du auch Git für die Verwendung von `gpg2` konfigurieren, indem du `git config --global gpg.program gpg2` ausführst.

4. Kopiere aus der Liste der GPG-Schlüssel die lange Form der GPG-Schlüssel-ID, die du verwenden möchtest. In diesem Beispiel lautet die GPG-Schlüssel-ID `3AA5C34371567BD2`:

   ```shell copy
   $ gpg --list-secret-keys --keyid-format=long
   /Users/hubot/.gnupg/secring.gpg
   ------------------------------------
   sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
   uid                          Hubot <hubot@example.com>
   ssb   4096R/4BB6D45482678BE3 2016-03-10
   ```

5. Um deinen primären GPG-Signaturschlüssel in Git festzulegen, fügst du unten den entsprechenden Text ein, also die ID des primären GPG-Schlüssels, den du verwenden möchtest. In diesem Beispiel lautet die GPG-Schlüssel-ID `3AA5C34371567BD2`:

   ```shell
   git config --global user.signingkey 3AA5C34371567BD2
   ```

   Alternativ können Sie einen Unterschlüssel verwenden. In diesem Beispiel lautet die GPG-Unterschlüssel-ID `4BB6D45482678BE3`:

   ```shell
   git config --global user.signingkey 4BB6D45482678BE3
   ```

   Wenn Sie mehrere Schlüssel und Unterschlüssel verwenden, sollten Sie dem Schlüssel ein Ausrufezeichen `!` anfügen, um Git mitzuteilen, dass dies Ihr bevorzugter Schlüssel ist. Gelegentlich müssen das Ausrufezeichen als Escapezeichen mit einem umgekehrten Schrägstrich versehen: `\!`.

6. Optional: Um Git so zu konfigurieren, dass alle Commits und Tags standardmäßig signiert werden, gib den folgenden Befehl ein:

   ```shell
   git config --global commit.gpgsign true
   git config --global tag.gpgSign true
   ```

   Weitere Informationen finden Sie unter [Signieren von Commits](/de/authentication/managing-commit-signature-verification/signing-commits).

7. Wenn du die GPG-Suite nicht verwendest, führe den folgenden Befehl in der `zsh` Shell aus, um den GPG-Schlüssel zu deiner `.zshrc` Datei hinzuzufügen, sofern vorhanden, oder zu deiner `.zprofile`Datei:

   ```shell
   $ if [ -r ~/.zshrc ]; then echo -e '\nexport GPG_TTY=$(tty)' >> ~/.zshrc; \
     else echo -e '\nexport GPG_TTY=$(tty)' >> ~/.zprofile; fi
   ```

   Wenn du die `bash` Shell verwendest, führe diesen Befehl aus:

   ```shell
   $ if [ -r ~/.bash_profile ]; then echo -e '\nexport GPG_TTY=$(tty)' >> ~/.bash_profile; \
     else echo -e '\nexport GPG_TTY=$(tty)' >> ~/.profile; fi
   ```

8. Wenn du zur Eingabe einer PIN oder Passphrase aufgefordert werden möchtest, installiere optional `pinentry-mac`. Verwende z. B. [Homebrew](https://brew.sh/):

   ```shell
   brew install pinentry-mac
   echo "pinentry-program $(which pinentry-mac)" >> ~/.gnupg/gpg-agent.conf
   killall gpg-agent
   ```

</div>

<div class="ghd-tool windows">

Wenn du einen GPG-Schlüssel verwendest, der mit deiner Committer-Identität und deiner verifizierten E-Mail-Adresse übereinstimmt, die mit deinem Konto auf GitHub.com verknüpft ist, kannst du mit dem Signieren von Commits und Tags beginnen.

> \[!NOTE]
> Wenn du keinen GPG-Schlüssel hast, der deiner Committer-Identität entspricht, musst du mit einem bestehenden Schlüssel eine E-Mail-Adresse verknüpfen. Weitere Informationen finden Sie unter [Verknüpfen einer E-Mail-Adresse mit deinem GPG-Schlüssel](/de/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key).

Wenn du mehrere GPG-Schlüssel hast, musst du Git mitteilen, welcher zu verwenden ist.

1. Öffne <span class="platform-mac">Terminal</span><span class="platform-linux">Terminal</span><span class="platform-windows">Git Bash</span>.
2. Wenn du Git zuvor so konfiguriert hast, dass beim Signieren mit `--gpg-sign` ein anderes Schlüsselformat verwendet wird, hebe diese Konfiguration auf, damit das Standardformat `openpgp` verwendet wird.

   ```shell
   git config --global --unset gpg.format
   ```
3. Verwende den Befehl `gpg --list-secret-keys --keyid-format=long`, um die Langform der GPG-Schlüssel aufzulisten, für die du sowohl über einen öffentlichen als auch einen privaten Schlüssel verfügst. Zum Signieren von Commits oder Tags ist ein privater Schlüssel erforderlich.

   ```shell copy
   gpg --list-secret-keys --keyid-format=long
   ```

   > \[!NOTE]
   > Bei einigen GPG-Installationen unter Linux musst du stattdessen möglicherweise `gpg2 --list-keys --keyid-format LONG` verwenden, um eine Liste deiner vorhandenen Schlüssel anzuzeigen. In diesem Fall musst du auch Git für die Verwendung von `gpg2` konfigurieren, indem du `git config --global gpg.program gpg2` ausführst.
4. Kopiere aus der Liste der GPG-Schlüssel die lange Form der GPG-Schlüssel-ID, die du verwenden möchtest. In diesem Beispiel lautet die GPG-Schlüssel-ID `3AA5C34371567BD2`:

   ```shell copy
   $ gpg --list-secret-keys --keyid-format=long
   /Users/hubot/.gnupg/secring.gpg
   ------------------------------------
   sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
   uid                          Hubot <hubot@example.com>
   ssb   4096R/4BB6D45482678BE3 2016-03-10
   ```
5. Um deinen primären GPG-Signaturschlüssel in Git festzulegen, fügst du unten den entsprechenden Text ein, also die ID des primären GPG-Schlüssels, den du verwenden möchtest. In diesem Beispiel lautet die GPG-Schlüssel-ID `3AA5C34371567BD2`:

   ```shell
   git config --global user.signingkey 3AA5C34371567BD2
   ```

   Alternativ können Sie einen Unterschlüssel verwenden. In diesem Beispiel lautet die GPG-Unterschlüssel-ID `4BB6D45482678BE3`:

   ```shell
   git config --global user.signingkey 4BB6D45482678BE3
   ```

   Wenn Sie mehrere Schlüssel und Unterschlüssel verwenden, sollten Sie dem Schlüssel ein Ausrufezeichen `!` anfügen, um Git mitzuteilen, dass dies Ihr bevorzugter Schlüssel ist. Gelegentlich müssen das Ausrufezeichen als Escapezeichen mit einem umgekehrten Schrägstrich versehen: `\!`.
6. Optional: Um Git so zu konfigurieren, dass alle Commits und Tags standardmäßig signiert werden, gib den folgenden Befehl ein:

   ```shell
   git config --global commit.gpgsign true
   git config --global tag.gpgSign true
   ```

   Weitere Informationen finden Sie unter [Signieren von Commits](/de/authentication/managing-commit-signature-verification/signing-commits).

</div>

<div class="ghd-tool linux">

Wenn du einen GPG-Schlüssel verwendest, der mit deiner Committer-Identität und deiner verifizierten E-Mail-Adresse übereinstimmt, die mit deinem Konto auf GitHub.com verknüpft ist, kannst du mit dem Signieren von Commits und Tags beginnen.

> \[!NOTE]
> Wenn du keinen GPG-Schlüssel hast, der deiner Committer-Identität entspricht, musst du mit einem bestehenden Schlüssel eine E-Mail-Adresse verknüpfen. Weitere Informationen finden Sie unter [Verknüpfen einer E-Mail-Adresse mit deinem GPG-Schlüssel](/de/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key).

Wenn du mehrere GPG-Schlüssel hast, musst du Git mitteilen, welcher zu verwenden ist.

1. Öffne <span class="platform-mac">Terminal</span><span class="platform-linux">Terminal</span><span class="platform-windows">Git Bash</span>.
2. Wenn du Git zuvor so konfiguriert hast, dass beim Signieren mit `--gpg-sign` ein anderes Schlüsselformat verwendet wird, hebe diese Konfiguration auf, damit das Standardformat `openpgp` verwendet wird.

   ```shell
   git config --global --unset gpg.format
   ```
3. Verwende den Befehl `gpg --list-secret-keys --keyid-format=long`, um die Langform der GPG-Schlüssel aufzulisten, für die du sowohl über einen öffentlichen als auch einen privaten Schlüssel verfügst. Zum Signieren von Commits oder Tags ist ein privater Schlüssel erforderlich.

   ```shell copy
   gpg --list-secret-keys --keyid-format=long
   ```

   > \[!NOTE]
   > Bei einigen GPG-Installationen unter Linux musst du stattdessen möglicherweise `gpg2 --list-keys --keyid-format LONG` verwenden, um eine Liste deiner vorhandenen Schlüssel anzuzeigen. In diesem Fall musst du auch Git für die Verwendung von `gpg2` konfigurieren, indem du `git config --global gpg.program gpg2` ausführst.
4. Kopiere aus der Liste der GPG-Schlüssel die lange Form der GPG-Schlüssel-ID, die du verwenden möchtest. In diesem Beispiel lautet die GPG-Schlüssel-ID `3AA5C34371567BD2`:

   ```shell copy
   $ gpg --list-secret-keys --keyid-format=long
   /Users/hubot/.gnupg/secring.gpg
   ------------------------------------
   sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
   uid                          Hubot <hubot@example.com>
   ssb   4096R/4BB6D45482678BE3 2016-03-10
   ```
5. Um deinen primären GPG-Signaturschlüssel in Git festzulegen, fügst du unten den entsprechenden Text ein, also die ID des primären GPG-Schlüssels, den du verwenden möchtest. In diesem Beispiel lautet die GPG-Schlüssel-ID `3AA5C34371567BD2`:

   ```shell
   git config --global user.signingkey 3AA5C34371567BD2
   ```

   Alternativ können Sie einen Unterschlüssel verwenden. In diesem Beispiel lautet die GPG-Unterschlüssel-ID `4BB6D45482678BE3`:

   ```shell
   git config --global user.signingkey 4BB6D45482678BE3
   ```

   Wenn Sie mehrere Schlüssel und Unterschlüssel verwenden, sollten Sie dem Schlüssel ein Ausrufezeichen `!` anfügen, um Git mitzuteilen, dass dies Ihr bevorzugter Schlüssel ist. Gelegentlich müssen das Ausrufezeichen als Escapezeichen mit einem umgekehrten Schrägstrich versehen: `\!`.
6. Optional: Um Git so zu konfigurieren, dass alle Commits und Tags standardmäßig signiert werden, gib den folgenden Befehl ein:

   ```shell
   git config --global commit.gpgsign true
   git config --global tag.gpgSign true
   ```

   Weitere Informationen finden Sie unter [Signieren von Commits](/de/authentication/managing-commit-signature-verification/signing-commits).
7. Führe zum Hinzufügen des `.bashrc` GPG-Schlüssels zur Startdatei den folgenden Befehl aus:

   ```bash
   [ -f ~/.bashrc ] && echo -e '\nexport GPG_TTY=$(tty)' >> ~/.bashrc
   ```

</div>

## Mitteilung über deinen SSH-Schlüssel an Git

Du kannst einen vorhandenen SSH-Schlüssel zum Signieren von Commits und Tags verwenden oder einen neuen Schlüssel speziell zum Signieren generieren. Weitere Informationen finden Sie unter [Generieren eines neuen SSH-Schlüssels und Hinzufügen des Schlüssels zum ssh-agent](/de/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).

> \[!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](https://git-scm.com/downloads)-Website.

1. Öffne <span class="platform-mac">Terminal</span><span class="platform-linux">Terminal</span><span class="platform-windows">Git Bash</span>.
2. Konfiguriere Git zur Verwendung von SSH zum Signieren von Commits und Tags:

   ```bash
   git config --global gpg.format ssh
   ```
3. Um deinen SSH-Signaturschlüssel in Git festzulegen, füge den folgenden Text ein und ersetze **/PATH/TO/.SSH/KEY.PUB** durch den Pfad zu dem öffentlichen Schlüssel, den du verwenden möchtest.

   ```bash
   git config --global user.signingkey /PATH/TO/.SSH/KEY.PUB
   ```

<div class="ghd-tool windows">

## Git über Deinen X.509-Schlüssel informieren

Du kannst [smimesign](https://github.com/github/smimesign) verwenden, um Commits und Tags mit S/MIME zu signieren.

> \[!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](https://git-scm.com/downloads)-Website.

1. Installiere [smimesign](https://github.com/github/smimesign#installation).

2. Öffne <span class="platform-mac">Terminal</span><span class="platform-linux">Terminal</span><span class="platform-windows">Git Bash</span>.

3. Lege fest, dass Git S/MIME zum Signieren von Commits und Tags verwendet. Verwende in Git 2.19 oder höher die Befehle `git config gpg.x509.program` und `git config gpg.format`:
   * Führe den folgenden Befehl aus, um S/MIME zum Signieren sämtlicher Repositorys zu verwenden:

     ```shell
     git config --global gpg.x509.program smimesign
     git config --global gpg.format x509
     ```

   * Führe den folgenden Befehl aus, um S/MIME zum Signieren eines einzelnen Repositorys zu verwenden:

     ```shell
     cd PATH-TO-REPOSITORY
     git config --local gpg.x509.program smimesign
     git config --local gpg.format x509
     ```

     Verwende in Git 2.18 oder niedrigeren Versionen den Befehl `git config gpg.program`:

   * Führe den folgenden Befehl aus, um S/MIME zum Signieren sämtlicher Repositorys zu verwenden:

     ```shell
     git config --global gpg.program smimesign
     ```

   * Führe den folgenden Befehl aus, um S/MIME zum Signieren eines einzelnen Repositorys zu verwenden:

     ```shell
     cd  PATH-TO-REPOSITORY
     git config --local gpg.program smimesign
     ```

     Wenn Du einen X.509-Schlüssel verwendest, der mit Deiner Beitragender-Identität übereinstimmt, kannst Du Commits und Tags signieren.

4. Wenn du keinen X.509-Schlüssel verwendest, der deiner Committeridentität entspricht, liste mit dem Befehl `smimesign --list-keys` die X.509-Schlüssel auf, für die du sowohl über ein Zertifikat als auch über einen privaten Schlüssel verfügst.

   ```shell
   smimesign --list-keys
   ```

5. Kopiere die Zertifikats-ID des gewünschten X.509-Schlüssels aus der Liste der X.509-Schlüssel. In diesem Beispiel lautet die Zertifikat-ID `0ff455a2708394633e4bb2f88002e3cd80cbd76f`:

   ```shell
   $ smimesign --list-keys
                ID: 0ff455a2708394633e4bb2f88002e3cd80cbd76f
               S/N: a2dfa7e8c9c4d1616f1009c988bb70f
         Algorithm: SHA256-RSA
          Validity: 2017-11-22 00:00:00 +0000 UTC - 2020-11-22 12:00:00 +0000 UTC
            Issuer: CN=DigiCert SHA2 Assured ID CA,OU=www.digicert.com,O=DigiCert Inc,C=US
           Subject: CN=Octocat,O=GitHub\, Inc.,L=San Francisco,ST=California,C=US
            Emails: octocat@github.com
   ```

6. Um Deinen X.509-Signaturschlüssel in Git festzulegen, füge den folgenden Text ein, und ersetze die zuvor kopierte Zertifikats-ID.
   * Um Deinen X.509-Schlüssel zum Signieren sämtlicher Repositorys zu verwenden:

     ```shell
     git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f
     ```

   * Um Deinen X.509-Schlüssel zum Signieren eines einzelnen Repositorys zu verwenden:

     ```shell
     cd  PATH-TO-REPOSITORY
     git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f
     ```

</div>

<div class="ghd-tool mac">

## Git über Deinen X.509-Schlüssel informieren

Du kannst [smimesign](https://github.com/github/smimesign) verwenden, um Commits und Tags mit S/MIME zu signieren.

> \[!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](https://git-scm.com/downloads)-Website.

1. Installiere [smimesign](https://github.com/github/smimesign#installation).

2. Öffne <span class="platform-mac">Terminal</span><span class="platform-linux">Terminal</span><span class="platform-windows">Git Bash</span>.

3. Lege fest, dass Git S/MIME zum Signieren von Commits und Tags verwendet. Verwende in Git 2.19 oder höher die Befehle `git config gpg.x509.program` und `git config gpg.format`:
   * Führe den folgenden Befehl aus, um S/MIME zum Signieren sämtlicher Repositorys zu verwenden:

     ```shell
     git config --global gpg.x509.program smimesign
     git config --global gpg.format x509
     ```

   * Führe den folgenden Befehl aus, um S/MIME zum Signieren eines einzelnen Repositorys zu verwenden:

     ```shell
     cd PATH-TO-REPOSITORY
     git config --local gpg.x509.program smimesign
     git config --local gpg.format x509
     ```

     Verwende in Git 2.18 oder niedrigeren Versionen den Befehl `git config gpg.program`:

   * Führe den folgenden Befehl aus, um S/MIME zum Signieren sämtlicher Repositorys zu verwenden:

     ```shell
     git config --global gpg.program smimesign
     ```

   * Führe den folgenden Befehl aus, um S/MIME zum Signieren eines einzelnen Repositorys zu verwenden:

     ```shell
     cd  PATH-TO-REPOSITORY
     git config --local gpg.program smimesign
     ```

     Wenn Du einen X.509-Schlüssel verwendest, der mit Deiner Beitragender-Identität übereinstimmt, kannst Du Commits und Tags signieren.

4. Wenn du keinen X.509-Schlüssel verwendest, der deiner Committeridentität entspricht, liste mit dem Befehl `smimesign --list-keys` die X.509-Schlüssel auf, für die du sowohl über ein Zertifikat als auch über einen privaten Schlüssel verfügst.

   ```shell
   smimesign --list-keys
   ```

5. Kopiere die Zertifikats-ID des gewünschten X.509-Schlüssels aus der Liste der X.509-Schlüssel. In diesem Beispiel lautet die Zertifikat-ID `0ff455a2708394633e4bb2f88002e3cd80cbd76f`:

   ```shell
   $ smimesign --list-keys
                ID: 0ff455a2708394633e4bb2f88002e3cd80cbd76f
               S/N: a2dfa7e8c9c4d1616f1009c988bb70f
         Algorithm: SHA256-RSA
          Validity: 2017-11-22 00:00:00 +0000 UTC - 2020-11-22 12:00:00 +0000 UTC
            Issuer: CN=DigiCert SHA2 Assured ID CA,OU=www.digicert.com,O=DigiCert Inc,C=US
           Subject: CN=Octocat,O=GitHub\, Inc.,L=San Francisco,ST=California,C=US
            Emails: octocat@github.com
   ```

6. Um Deinen X.509-Signaturschlüssel in Git festzulegen, füge den folgenden Text ein, und ersetze die zuvor kopierte Zertifikats-ID.
   * Um Deinen X.509-Schlüssel zum Signieren sämtlicher Repositorys zu verwenden:

     ```shell
     git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f
     ```

   * Um Deinen X.509-Schlüssel zum Signieren eines einzelnen Repositorys zu verwenden:

     ```shell
     cd  PATH-TO-REPOSITORY
     git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f
     ```

</div>

## Weiterführende Lektüre

* [Hinzufügen eines neuen SSH-Schlüssels zu Ihrem GitHub Konto](/de/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account).
* [Signieren von Commits](/de/authentication/managing-commit-signature-verification/signing-commits)
* [Tags signieren](/de/authentication/managing-commit-signature-verification/signing-tags)