Skip to main content

Git zu Signaturschlüsseln benachrichtigen

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

Git deinen GPG-Schlüssel mitteilen

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.

Wenn du keinen GPG-Schlüssel hast, der deiner Beitragender-Identität entspricht, musst du deinen Schlüssel mit einer E-Mail-Adresse verknüpfen. Weitere Informationen findest du unter „Zuordnen einer E-Mail zu deinem GPG-Schlüssel.“

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

  1. Öffne TerminalTerminalGit Bash. 1. If you have previously configured Git to use a different key format when signing with --gpg-sign, unset this configuration so the default format of openpgp will be used.

    $ git config --global --unset gpg.format
    ``` 1. 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
    

    Hinweis: Bei einigen GPG-Installationen unter Linux musst du möglicherweise stattdessen gpg2 --list-keys --keyid-format LONG verwenden, um eine Liste einer 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.

    1. 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 ssb 4096R/42B317FD4BA89E7A 2016-03-10 ``` 1. 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`:
    $ git config --global user.signingkey 3AA5C34371567BD2
    Alternativ kannst du beim Festlegen eines Unterschlüssels das `!`-Suffix anfügen. In diesem Beispiel lautet die GPG-Unterschlüssel-ID `4BB6D45482678BE3`:
    $ git config --global user.signingkey 4BB6D45482678BE3!
    1. Optionally, to configure Git to sign all commits by default, enter the following command:
    $ git config --global commit.gpgsign true
    

    For more information, see "Signing commits."

  2. 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 .zprofileDatei:

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

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

    $ if [ -r ~/.bash_profile ]; then echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile; \
      else echo 'export GPG_TTY=$(tty)' >> ~/.profile; fi
  3. Wenn du zur Eingabe einer PIN oder Passphrase aufgefordert werden möchtest, installiere optional pinentry-mac. Verwende z. B. Homebrew:

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

Git deinen GPG-Schlüssel mitteilen

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.

Wenn du keinen GPG-Schlüssel hast, der deiner Beitragender-Identität entspricht, musst du deinen Schlüssel mit einer E-Mail-Adresse verknüpfen. Weitere Informationen findest du unter „Zuordnen einer E-Mail zu deinem GPG-Schlüssel.“

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

  1. Öffne TerminalTerminalGit Bash. 1. If you have previously configured Git to use a different key format when signing with --gpg-sign, unset this configuration so the default format of openpgp will be used.

    $ git config --global --unset gpg.format
    ``` 1. 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
    

    Hinweis: Bei einigen GPG-Installationen unter Linux musst du möglicherweise stattdessen gpg2 --list-keys --keyid-format LONG verwenden, um eine Liste einer 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.

    1. 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 ssb 4096R/42B317FD4BA89E7A 2016-03-10 ``` 1. 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`:
    $ git config --global user.signingkey 3AA5C34371567BD2
    Alternativ kannst du beim Festlegen eines Unterschlüssels das `!`-Suffix anfügen. In diesem Beispiel lautet die GPG-Unterschlüssel-ID `4BB6D45482678BE3`:
    $ git config --global user.signingkey 4BB6D45482678BE3!
    1. Optionally, to configure Git to sign all commits by default, enter the following command:
    $ git config --global commit.gpgsign true
    

    For more information, see "Signing commits."

Git deinen GPG-Schlüssel mitteilen

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.

Wenn du keinen GPG-Schlüssel hast, der deiner Beitragender-Identität entspricht, musst du deinen Schlüssel mit einer E-Mail-Adresse verknüpfen. Weitere Informationen findest du unter „Zuordnen einer E-Mail zu deinem GPG-Schlüssel.“

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

  1. Öffne TerminalTerminalGit Bash. 1. If you have previously configured Git to use a different key format when signing with --gpg-sign, unset this configuration so the default format of openpgp will be used.

    $ git config --global --unset gpg.format
    ``` 1. 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
    

    Hinweis: Bei einigen GPG-Installationen unter Linux musst du möglicherweise stattdessen gpg2 --list-keys --keyid-format LONG verwenden, um eine Liste einer 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.

    1. 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 ssb 4096R/42B317FD4BA89E7A 2016-03-10 ``` 1. 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`:
    $ git config --global user.signingkey 3AA5C34371567BD2
    Alternativ kannst du beim Festlegen eines Unterschlüssels das `!`-Suffix anfügen. In diesem Beispiel lautet die GPG-Unterschlüssel-ID `4BB6D45482678BE3`:
    $ git config --global user.signingkey 4BB6D45482678BE3!
    1. Optionally, to configure Git to sign all commits by default, enter the following command:
    $ git config --global commit.gpgsign true
    

    For more information, see "Signing commits."

  2. Führe zum Hinzufügen des .bashrc GPG-Schlüssels zur Startdatei den folgenden Befehl aus:

    $ [ -f ~/.bashrc ] && echo 'export GPG_TTY=$(tty)' >> ~/.bashrc
    

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 findest du unter Generieren eines neuen SSH-Schlüssels und Hinzufügen des Schlüssels zum SSH-Agent.

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.

  1. Öffne TerminalTerminalGit Bash. 1. Konfiguriere Git zur Verwendung von SSH zum Signieren von Commits und Tags:
    $ git config --global gpg.format ssh
    ``` 1. Um deinen SSH-Signaturschlüssel in Git festzulegen, füge den folgenden Text ein und ersetze **/PATH/TO/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
    

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

Du kannst smimesign verwenden, um Commits und Tags mit S/MIME zu signieren.

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.

  1. Installiere smimesign.
  2. Öffne TerminalTerminalGit Bash.
  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:
    $ 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:
    $ cd /path/to/my/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:
    $ git config --global gpg.program smimesign
  • Führe den folgenden Befehl aus, um S/MIME zum Signieren eines einzelnen Repositorys zu verwenden:
    $ cd /path/to/my/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.
  1. 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.
    $ smimesign --list-keys
  2. 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:
    $ 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
  3. 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:
    $ git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f
  • Um Deinen X.509-Schlüssel zum Signieren eines einzelnen Repositorys zu verwenden:
    $ cd /path/to/my/repository
    $ git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f

Weiterführende Themen