# Informer Git de l’utilisation de votre clé de signature

Pour signer les commits localement, vous devez informer Git que vous voulez utiliser une clé GPG, SSH ou X.509 existante.

## Informer Git de votre clé GPG

<div class="ghd-tool mac">

Si vous utilisez une clé GPG qui correspond à votre identité de commiteur et à votre adresse e-mail vérifiée associées à votre compte sur GitHub.com, vous pouvez commencer à signer des commits et des étiquettes.

> \[!NOTE]
> Si vous n’avez pas de clé GPG qui correspond à votre identité de commiteur, vous devez associer un e-mail à une clé existante. Pour plus d’informations, consultez « [Association d’un e-mail à votre clé GPG](/fr/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key) ».

Si vous avez plusieurs clés GPG, vous devez indiquer à Git laquelle utiliser.

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

2. Si vous avez précédemment configuré Git pour utiliser un autre format de clé lors de la signature avec `--gpg-sign`, annulez cette configuration afin que le format par défaut `openpgp` soit utilisé.

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

3. Utilisez la commande `gpg --list-secret-keys --keyid-format=long` pour répertorier la forme longue des clés GPG pour lesquelles vous disposez à la fois d’une clé publique et d’une clé privée. Une clé privée est requise pour la signature des validations ou des étiquettes.

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

   > \[!NOTE]
   > Certaines installations GPG sous Linux peuvent vous demander d'utiliser `gpg2 --list-keys --keyid-format LONG` pour afficher une liste de vos clés existantes à la place. Dans ce cas, vous devez également configurer Git pour qu’il utilise `gpg2` en exécutant `git config --global gpg.program gpg2`.

4. Dans la liste des clés GPG, copiez la forme longue de l’ID de clé GPG à utiliser. Dans cet exemple, l’ID de clé GPG est `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. Pour définir votre clé de signature primaire GPG dans Git, collez le texte ci-dessous en spécifiant l’ID de clé primaire GPG que vous souhaitez utiliser. Dans cet exemple, l’ID de clé GPG est `3AA5C34371567BD2` :

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

   Vous pouvez également utiliser une sous-clé. Dans cet exemple, l’ID de sous-clé GPG est `4BB6D45482678BE3` :

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

   Si vous utilisez plusieurs clés et sous-clés, vous devez ajouter un point d’exclamation `!` à la clé pour indiquer à git qu’il s’agit de votre clé préférée. Parfois, vous devrez peut-être remplacer la marque d’exclamation par une barre oblique inverse : `\!`.

6. En option, pour configurer Git afin qu'il signe tous les commits et les tags par défaut, entrez la commande suivante :

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

   Pour plus d’informations, consultez « [Signature de commits](/fr/authentication/managing-commit-signature-verification/signing-commits) ».

7. Si vous n’utilisez pas la suite GPG, exécutez la commande suivante dans l’interpréteur de commandes `zsh` pour ajouter la clé GPG à votre fichier `.zshrc`, s’il existe, ou votre fichier `.zprofile` :

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

   Alternativement, si vous utilisez l'interpréteur de commandes `bash`, exécutez cette commande :

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

8. Si vous le souhaitez, pour être invité à entrer un code PIN ou une phrase secrète quand c’est nécessaire, installez `pinentry-mac`. Par exemple, avec [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">

Si vous utilisez une clé GPG qui correspond à votre identité de commiteur et à votre adresse e-mail vérifiée associées à votre compte sur GitHub.com, vous pouvez commencer à signer des commits et des étiquettes.

> \[!NOTE]
> Si vous n’avez pas de clé GPG qui correspond à votre identité de commiteur, vous devez associer un e-mail à une clé existante. Pour plus d’informations, consultez « [Association d’un e-mail à votre clé GPG](/fr/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key) ».

Si vous avez plusieurs clés GPG, vous devez indiquer à Git laquelle utiliser.

1. Ouvrez <span class="platform-mac">Terminal</span><span class="platform-linux">Terminal</span><span class="platform-windows">Git Bash</span>.
2. Si vous avez précédemment configuré Git pour utiliser un autre format de clé lors de la signature avec `--gpg-sign`, annulez cette configuration afin que le format par défaut `openpgp` soit utilisé.

   ```shell
   git config --global --unset gpg.format
   ```
3. Utilisez la commande `gpg --list-secret-keys --keyid-format=long` pour répertorier la forme longue des clés GPG pour lesquelles vous disposez à la fois d’une clé publique et d’une clé privée. Une clé privée est requise pour la signature des validations ou des étiquettes.

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

   > \[!NOTE]
   > Certaines installations GPG sous Linux peuvent vous demander d'utiliser `gpg2 --list-keys --keyid-format LONG` pour afficher une liste de vos clés existantes à la place. Dans ce cas, vous devez également configurer Git pour qu’il utilise `gpg2` en exécutant `git config --global gpg.program gpg2`.
4. Dans la liste des clés GPG, copiez la forme longue de l’ID de clé GPG à utiliser. Dans cet exemple, l’ID de clé GPG est `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. Pour définir votre clé de signature primaire GPG dans Git, collez le texte ci-dessous en spécifiant l’ID de clé primaire GPG que vous souhaitez utiliser. Dans cet exemple, l’ID de clé GPG est `3AA5C34371567BD2` :

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

   Vous pouvez également utiliser une sous-clé. Dans cet exemple, l’ID de sous-clé GPG est `4BB6D45482678BE3` :

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

   Si vous utilisez plusieurs clés et sous-clés, vous devez ajouter un point d’exclamation `!` à la clé pour indiquer à git qu’il s’agit de votre clé préférée. Parfois, vous devrez peut-être remplacer la marque d’exclamation par une barre oblique inverse : `\!`.
6. En option, pour configurer Git afin qu'il signe tous les commits et les tags par défaut, entrez la commande suivante :

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

   Pour plus d’informations, consultez « [Signature de commits](/fr/authentication/managing-commit-signature-verification/signing-commits) ».

</div>

<div class="ghd-tool linux">

Si vous utilisez une clé GPG qui correspond à votre identité de commiteur et à votre adresse e-mail vérifiée associées à votre compte sur GitHub.com, vous pouvez commencer à signer des commits et des étiquettes.

> \[!NOTE]
> Si vous n’avez pas de clé GPG qui correspond à votre identité de commiteur, vous devez associer un e-mail à une clé existante. Pour plus d’informations, consultez « [Association d’un e-mail à votre clé GPG](/fr/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key) ».

Si vous avez plusieurs clés GPG, vous devez indiquer à Git laquelle utiliser.

1. Ouvrez <span class="platform-mac">Terminal</span><span class="platform-linux">Terminal</span><span class="platform-windows">Git Bash</span>.
2. Si vous avez précédemment configuré Git pour utiliser un autre format de clé lors de la signature avec `--gpg-sign`, annulez cette configuration afin que le format par défaut `openpgp` soit utilisé.

   ```shell
   git config --global --unset gpg.format
   ```
3. Utilisez la commande `gpg --list-secret-keys --keyid-format=long` pour répertorier la forme longue des clés GPG pour lesquelles vous disposez à la fois d’une clé publique et d’une clé privée. Une clé privée est requise pour la signature des validations ou des étiquettes.

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

   > \[!NOTE]
   > Certaines installations GPG sous Linux peuvent vous demander d'utiliser `gpg2 --list-keys --keyid-format LONG` pour afficher une liste de vos clés existantes à la place. Dans ce cas, vous devez également configurer Git pour qu’il utilise `gpg2` en exécutant `git config --global gpg.program gpg2`.
4. Dans la liste des clés GPG, copiez la forme longue de l’ID de clé GPG à utiliser. Dans cet exemple, l’ID de clé GPG est `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. Pour définir votre clé de signature primaire GPG dans Git, collez le texte ci-dessous en spécifiant l’ID de clé primaire GPG que vous souhaitez utiliser. Dans cet exemple, l’ID de clé GPG est `3AA5C34371567BD2` :

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

   Vous pouvez également utiliser une sous-clé. Dans cet exemple, l’ID de sous-clé GPG est `4BB6D45482678BE3` :

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

   Si vous utilisez plusieurs clés et sous-clés, vous devez ajouter un point d’exclamation `!` à la clé pour indiquer à git qu’il s’agit de votre clé préférée. Parfois, vous devrez peut-être remplacer la marque d’exclamation par une barre oblique inverse : `\!`.
6. En option, pour configurer Git afin qu'il signe tous les commits et les tags par défaut, entrez la commande suivante :

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

   Pour plus d’informations, consultez « [Signature de commits](/fr/authentication/managing-commit-signature-verification/signing-commits) ».
7. Pour ajouter votre clé GPG à votre fichier de démarrage `.bashrc`, exécutez la commande suivante :

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

</div>

## Informer Git concernant votre clé SSH

Vous pouvez utiliser une clé SSH existante pour signer des commits et des étiquettes, ou en générer une nouvelle spécifiquement pour la signature. Pour plus d’informations, consultez « [Génération d’une nouvelle clé SSH et ajout de celle-ci à ssh-agent](/fr/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) ».

> \[!NOTE]
> La vérification de signature SSH est disponible dans Git 2.34 ou version ultérieure. Pour mettre à jour votre version de Git, consultez le site web [Git](https://git-scm.com/downloads).

1. Ouvrez <span class="platform-mac">Terminal</span><span class="platform-linux">Terminal</span><span class="platform-windows">Git Bash</span>.
2. Configurez Git afin d’utiliser SSH pour signer les commits et étiquettes :

   ```bash
   git config --global gpg.format ssh
   ```
3. Pour définir votre clé de signature SSH dans Git, collez le texte ci-dessous en remplaçant **/PATH/TO/.SSH/KEY.PUB** par le chemin vers la clé publique que vous souhaitez utiliser.

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

<div class="ghd-tool windows">

## Informer Git concernant votre clé X.509

Vous pouvez utiliser [smimesign](https://github.com/github/smimesign) pour signer des commits et des étiquettes à l’aide de S/MIME.

> \[!NOTE]
> La vérification de signature S/MIME est disponible dans Git 2.19 ou version ultérieure. Pour mettre à jour votre version de Git, consultez le site web [Git](https://git-scm.com/downloads).

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

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

3. Configurez Git afin d’utiliser S/MIME pour signer des validations et des balises. Dans Git 2.19 ou version ultérieure, utilisez les commandes `git config gpg.x509.program` et `git config gpg.format` :
   * Pour utiliser S/MIME pour signer pour tous les dépôts :

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

   * Pour utiliser S/MIME pour signer pour un seul dépôt :

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

     Dans Git 2.18 ou version antérieure, utilisez la commande `git config gpg.program` :

   * Pour utiliser S/MIME pour signer pour tous les dépôts :

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

   * Pour utiliser S/MIME pour signer pour un seul dépôt :

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

     Si vous utilisez une clé X.509 correspondant à votre identité de valideur, vous pouvez commencer à signer des validations et des étiquettes.

4. Si vous n’utilisez pas de clé X.509 correspondant à votre identité de valideur, répertoriez les clés X.509 pour lesquelles vous disposez ’un certificat et d’une clé privée à l’aide de la commande `smimesign --list-keys`.

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

5. Dans la liste des clés X.509, copiez l’ID de certificat de la clé X.509 que vous souhaitez utiliser. Dans cet exemple, l’ID de certificat est `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. Pour définir votre clé de signature X.509 dans Git, collez le texte ci-dessous, en remplaçant l’ID de certificat par celui que vous avez copié précédemment.
   * Pour utiliser votre clé X.509 pour signer pour tous les dépôts :

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

   * Pour utiliser votre clé X.509 pour signer pour un seul dépôt :

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

</div>

<div class="ghd-tool mac">

## Informer Git concernant votre clé X.509

Vous pouvez utiliser [smimesign](https://github.com/github/smimesign) pour signer des commits et des étiquettes à l’aide de S/MIME.

> \[!NOTE]
> La vérification de signature S/MIME est disponible dans Git 2.19 ou version ultérieure. Pour mettre à jour votre version de Git, consultez le site web [Git](https://git-scm.com/downloads).

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

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

3. Configurez Git afin d’utiliser S/MIME pour signer des validations et des balises. Dans Git 2.19 ou version ultérieure, utilisez les commandes `git config gpg.x509.program` et `git config gpg.format` :
   * Pour utiliser S/MIME pour signer pour tous les dépôts :

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

   * Pour utiliser S/MIME pour signer pour un seul dépôt :

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

     Dans Git 2.18 ou version antérieure, utilisez la commande `git config gpg.program` :

   * Pour utiliser S/MIME pour signer pour tous les dépôts :

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

   * Pour utiliser S/MIME pour signer pour un seul dépôt :

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

     Si vous utilisez une clé X.509 correspondant à votre identité de valideur, vous pouvez commencer à signer des validations et des étiquettes.

4. Si vous n’utilisez pas de clé X.509 correspondant à votre identité de valideur, répertoriez les clés X.509 pour lesquelles vous disposez ’un certificat et d’une clé privée à l’aide de la commande `smimesign --list-keys`.

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

5. Dans la liste des clés X.509, copiez l’ID de certificat de la clé X.509 que vous souhaitez utiliser. Dans cet exemple, l’ID de certificat est `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. Pour définir votre clé de signature X.509 dans Git, collez le texte ci-dessous, en remplaçant l’ID de certificat par celui que vous avez copié précédemment.
   * Pour utiliser votre clé X.509 pour signer pour tous les dépôts :

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

   * Pour utiliser votre clé X.509 pour signer pour un seul dépôt :

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

</div>

## Pour aller plus loin

* [Ajout d’une nouvelle clé SSH à votre compte GitHub](/fr/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account).
* [Signature de commits](/fr/authentication/managing-commit-signature-verification/signing-commits)
* [Signature d’étiquettes](/fr/authentication/managing-commit-signature-verification/signing-tags)