# Informarle a Git acerca de tu clave de firma

Para firmar las confirmaciones localmente, debes informar a Git de que hay una clave de GPG, SSH o X.509 que quieres utilizar.

## Informarle a Git acerca de tu llave GPG

<div class="ghd-tool mac">

Si estás utilizando una clave GPG que coincide con tu identidad de confirmante y tu dirección de correo electrónico verificada asociada a tu cuenta de GitHub.com, entonces puedes comenzar a firmar confirmaciones y etiquetas.

> \[!NOTE]
> Si no tienes una llave GPG que coincida con la identidad de la persona que confirma el cambio, debes asociar un correo electrónico a una llave existente. Para más información, consulta [Asociar un correo electrónico con tu llave GPG](/es/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key).

Si tienes múltiples llaves GPG, le debes decir a Git cuál utilizar.

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

2. Si has configurado previamente Git para usar un formato de clave diferente al firmar con `--gpg-sign`, quita esta configuración para que se use el formato predeterminado de `openpgp`.

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

3. Use el comando `gpg --list-secret-keys --keyid-format=long` para enumerar el formato largo de las claves de GPG para las que tiene una clave pública y privada. Se requiere una llave privada para registrar confirmaciones o etiquetas.

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

   > \[!NOTE]
   > Es posible que en algunas instalaciones de GPG en Linux sea necesario usar en cambio `gpg2 --list-keys --keyid-format LONG` para ver una lista de las claves existentes. En este caso, también tendrá que configurar Git para que use `gpg2` mediante la ejecución de `git config --global gpg.program gpg2`.

4. Desde la lista de llaves GPG, compia la forma larga de la ID de la llave GPG que quieres utilizar. En este ejemplo, el id. de clave de GPG es `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. Para configurar tu llave de firma GPG principal en Git, pega el siguiente texto en sustitución de la ID de la llave GPG principal que quieras utilizar. En este ejemplo, el id. de clave de GPG es `3AA5C34371567BD2`:

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

   Como alternativa, puede que le interese utilizar una subclave. En este ejemplo, el id. de subclave de GPG es `4BB6D45482678BE3`:

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

   Si utiliza varias claves y subclaves, debe anexar una marca de exclamación `!` a la clave para indicar a Git que esta es la clave preferida. A veces, es posible que tenga que evitar el signo de exclamación con una barra diagonal inversa: `\!`.

6. Opcionalmente, para configurar Git para firmar todas las confirmaciones y etiquetas de forma predeterminada, escribe el siguiente comando:

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

   Para más información, consulta [Firmar confirmaciones](/es/authentication/managing-commit-signature-verification/signing-commits).

7. Si no usa el conjunto de GPG, ejecute el comando siguiente en el shell de `zsh` para agregar la clave de GPG al archivo `.zshrc`, si existe, o bien al archivo `.zprofile`:

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

   Como alternativa, si usa el shell de `bash`, ejecute este comando:

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

8. Opcionalmente, para que se le solicite que escriba un PIN o una frase de contraseña cuando sea necesario, instale `pinentry-mac`. Por ejemplo, con [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 estás utilizando una clave GPG que coincide con tu identidad de confirmante y tu dirección de correo electrónico verificada asociada a tu cuenta de GitHub.com, entonces puedes comenzar a firmar confirmaciones y etiquetas.

> \[!NOTE]
> Si no tienes una llave GPG que coincida con la identidad de la persona que confirma el cambio, debes asociar un correo electrónico a una llave existente. Para más información, consulta [Asociar un correo electrónico con tu llave GPG](/es/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key).

Si tienes múltiples llaves GPG, le debes decir a Git cuál utilizar.

1. Abra <span class="platform-mac">Terminal</span><span class="platform-linux">Terminal</span><span class="platform-windows">Git Bash</span>.
2. Si has configurado previamente Git para usar un formato de clave diferente al firmar con `--gpg-sign`, quita esta configuración para que se use el formato predeterminado de `openpgp`.

   ```shell
   git config --global --unset gpg.format
   ```
3. Use el comando `gpg --list-secret-keys --keyid-format=long` para enumerar el formato largo de las claves de GPG para las que tiene una clave pública y privada. Se requiere una llave privada para registrar confirmaciones o etiquetas.

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

   > \[!NOTE]
   > Es posible que en algunas instalaciones de GPG en Linux sea necesario usar en cambio `gpg2 --list-keys --keyid-format LONG` para ver una lista de las claves existentes. En este caso, también tendrá que configurar Git para que use `gpg2` mediante la ejecución de `git config --global gpg.program gpg2`.
4. Desde la lista de llaves GPG, compia la forma larga de la ID de la llave GPG que quieres utilizar. En este ejemplo, el id. de clave de GPG es `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. Para configurar tu llave de firma GPG principal en Git, pega el siguiente texto en sustitución de la ID de la llave GPG principal que quieras utilizar. En este ejemplo, el id. de clave de GPG es `3AA5C34371567BD2`:

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

   Como alternativa, puede que le interese utilizar una subclave. En este ejemplo, el id. de subclave de GPG es `4BB6D45482678BE3`:

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

   Si utiliza varias claves y subclaves, debe anexar una marca de exclamación `!` a la clave para indicar a Git que esta es la clave preferida. A veces, es posible que tenga que evitar el signo de exclamación con una barra diagonal inversa: `\!`.
6. Opcionalmente, para configurar Git para firmar todas las confirmaciones y etiquetas de forma predeterminada, escribe el siguiente comando:

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

   Para más información, consulta [Firmar confirmaciones](/es/authentication/managing-commit-signature-verification/signing-commits).

</div>

<div class="ghd-tool linux">

Si estás utilizando una clave GPG que coincide con tu identidad de confirmante y tu dirección de correo electrónico verificada asociada a tu cuenta de GitHub.com, entonces puedes comenzar a firmar confirmaciones y etiquetas.

> \[!NOTE]
> Si no tienes una llave GPG que coincida con la identidad de la persona que confirma el cambio, debes asociar un correo electrónico a una llave existente. Para más información, consulta [Asociar un correo electrónico con tu llave GPG](/es/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key).

Si tienes múltiples llaves GPG, le debes decir a Git cuál utilizar.

1. Abra <span class="platform-mac">Terminal</span><span class="platform-linux">Terminal</span><span class="platform-windows">Git Bash</span>.
2. Si has configurado previamente Git para usar un formato de clave diferente al firmar con `--gpg-sign`, quita esta configuración para que se use el formato predeterminado de `openpgp`.

   ```shell
   git config --global --unset gpg.format
   ```
3. Use el comando `gpg --list-secret-keys --keyid-format=long` para enumerar el formato largo de las claves de GPG para las que tiene una clave pública y privada. Se requiere una llave privada para registrar confirmaciones o etiquetas.

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

   > \[!NOTE]
   > Es posible que en algunas instalaciones de GPG en Linux sea necesario usar en cambio `gpg2 --list-keys --keyid-format LONG` para ver una lista de las claves existentes. En este caso, también tendrá que configurar Git para que use `gpg2` mediante la ejecución de `git config --global gpg.program gpg2`.
4. Desde la lista de llaves GPG, compia la forma larga de la ID de la llave GPG que quieres utilizar. En este ejemplo, el id. de clave de GPG es `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. Para configurar tu llave de firma GPG principal en Git, pega el siguiente texto en sustitución de la ID de la llave GPG principal que quieras utilizar. En este ejemplo, el id. de clave de GPG es `3AA5C34371567BD2`:

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

   Como alternativa, puede que le interese utilizar una subclave. En este ejemplo, el id. de subclave de GPG es `4BB6D45482678BE3`:

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

   Si utiliza varias claves y subclaves, debe anexar una marca de exclamación `!` a la clave para indicar a Git que esta es la clave preferida. A veces, es posible que tenga que evitar el signo de exclamación con una barra diagonal inversa: `\!`.
6. Opcionalmente, para configurar Git para firmar todas las confirmaciones y etiquetas de forma predeterminada, escribe el siguiente comando:

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

   Para más información, consulta [Firmar confirmaciones](/es/authentication/managing-commit-signature-verification/signing-commits).
7. Para agregar la clave de GPG al archivo de inicio de `.bashrc`, ejecute el comando siguiente:

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

</div>

## Indicación a Git acerca de tu clave SSH

Puedes usar una clave SSH existente para firmar confirmaciones y etiquetas, o generar una nueva específicamente para firmar. Para más información, consulta [Generación de una nueva clave SSH y adición al agente SSH](/es/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).

> \[!NOTE]
> La verificación de la firma SSH está disponible en Git 2.34 o posterior. Para actualizar la versión de Git, vea el sitio web de [Git](https://git-scm.com/downloads).

1. Abra <span class="platform-mac">Terminal</span><span class="platform-linux">Terminal</span><span class="platform-windows">Git Bash</span>.
2. Configura Git para que use SSH a fin de firmar confirmaciones y etiquetas:

   ```bash
   git config --global gpg.format ssh
   ```
3. Para configurar tu clave de firma SSH en Git, pega el texto siguiente sustituyendo **/PATH/TO/.SSH/KEY.PUB** por la ruta de la clave pública que quieras utilizar.

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

<div class="ghd-tool windows">

## Informarle a Git acerca de tu llave X.509

Puedes usar [smimesign](https://github.com/github/smimesign) para firmar confirmaciones y etiquetas mediante S/MIME.

> \[!NOTE]
> La verificación de la firma S/MIME está disponible en Git 2.19 o posterior. Para actualizar la versión de Git, vea el sitio web de [Git](https://git-scm.com/downloads).

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

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

3. Configura Git para que use S/MIME para firmar confirmaciones y etiquetas. En Git 2.19 o posterior, use los comandos `git config gpg.x509.program` y `git config gpg.format`:
   * Para utilizar S/MIME para firmar todos los repositorios:

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

   * Para utilizar S/MIME para firmar un repositorio único:

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

     En Git 2.18 o anterior, use el comando `git config gpg.program`:

   * Para utilizar S/MIME para firmar todos los repositorios:

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

   * Para utilizar S/MIME para firmar un repositorio único:

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

     Si estás utilizando una llave X.509 que coincide con tu identidad de persona que confirma el cambio, puedes comenzar firmando confirmaciones y etiquetas.

4. Si no usa una clave X.509 que coincida con la identidad del responsable de la confirmación, enumere las claves X.509 para las que tenga un certificado y una clave mediante el comando `smimesign --list-keys`.

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

5. De la lista de llaves X.509, copia el ID del certificado de la llave X.509 que desearías utilizar. En este ejemplo, el id. de certificado es `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. Para configurar tu llave de firma X.509 en Git, pega el texto de abajo, sustituyendo el ID del certificado que copiaste anteriormente.
   * Para utilizar tu llave X.509 para firmar todos los repositorios:

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

   * Para utilizar tu llave X.509 para firmar un repositorio único:

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

</div>

<div class="ghd-tool mac">

## Informarle a Git acerca de tu llave X.509

Puedes usar [smimesign](https://github.com/github/smimesign) para firmar confirmaciones y etiquetas mediante S/MIME.

> \[!NOTE]
> La verificación de la firma S/MIME está disponible en Git 2.19 o posterior. Para actualizar la versión de Git, vea el sitio web de [Git](https://git-scm.com/downloads).

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

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

3. Configura Git para que use S/MIME para firmar confirmaciones y etiquetas. En Git 2.19 o posterior, use los comandos `git config gpg.x509.program` y `git config gpg.format`:
   * Para utilizar S/MIME para firmar todos los repositorios:

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

   * Para utilizar S/MIME para firmar un repositorio único:

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

     En Git 2.18 o anterior, use el comando `git config gpg.program`:

   * Para utilizar S/MIME para firmar todos los repositorios:

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

   * Para utilizar S/MIME para firmar un repositorio único:

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

     Si estás utilizando una llave X.509 que coincide con tu identidad de persona que confirma el cambio, puedes comenzar firmando confirmaciones y etiquetas.

4. Si no usa una clave X.509 que coincida con la identidad del responsable de la confirmación, enumere las claves X.509 para las que tenga un certificado y una clave mediante el comando `smimesign --list-keys`.

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

5. De la lista de llaves X.509, copia el ID del certificado de la llave X.509 que desearías utilizar. En este ejemplo, el id. de certificado es `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. Para configurar tu llave de firma X.509 en Git, pega el texto de abajo, sustituyendo el ID del certificado que copiaste anteriormente.
   * Para utilizar tu llave X.509 para firmar todos los repositorios:

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

   * Para utilizar tu llave X.509 para firmar un repositorio único:

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

</div>

## Información adicional

* [Adición de una nueva clave SSH a la cuenta de GitHub](/es/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account).
* [Firmar confirmaciones](/es/authentication/managing-commit-signature-verification/signing-commits)
* [Firmar etiquetas](/es/authentication/managing-commit-signature-verification/signing-tags)