{"meta":{"title":"Informar ao Git sobre a chave de assinatura","intro":"Para assinar commits localmente, você precisa informar ao Git que há uma chave GPG, SSH ou X.509 que deseja usar.","product":"Autenticação","breadcrumbs":[{"href":"/pt/authentication","title":"Autenticação"},{"href":"/pt/authentication/managing-commit-signature-verification","title":"Verificar assinaturas de commit"},{"href":"/pt/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key","title":"Informar o Git sobre a chave de assinatura"}],"documentType":"article"},"body":"# Informar ao Git sobre a chave de assinatura\n\nPara assinar commits localmente, você precisa informar ao Git que há uma chave GPG, SSH ou X.509 que deseja usar.\n\n## Informar ao Git sobre a chave GPG\n\n<div class=\"ghd-tool mac\">\n\nSe você estiver usando uma chave GPG que corresponde à sua identidade do autor do submissão e ao endereço de e-mail verificado associado à sua conta em GitHub.com, você poderá começar a assinar commits e tags.\n\n> \\[!NOTE]\n> Se você não tiver uma chave GPG que corresponda à identidade do committer, precisará associar um e-mail a uma chave existente. Para saber mais, confira [Associar um e-mail à chave GPG](/pt/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key).\n\nSe você tiver várias chaves GPG, precisará informar ao Git qual deve ser usada.\n\n1. Abra <span class=\"platform-mac\">Terminal</span><span class=\"platform-linux\">Terminal</span><span class=\"platform-windows\">Git Bash</span>.\n\n2. Se você tiver configurado anteriormente o Git para usar um formato de chave diferente ao assinar com o `--gpg-sign`, desmarque essa configuração para que o formato padrão de `openpgp` seja usado.\n\n   ```shell\n   git config --global --unset gpg.format\n   ```\n\n3. Use o comando `gpg --list-secret-keys --keyid-format=long` para listar a forma longa das chaves GPG para as quais você tem uma chave pública e privada. Uma chave privada é necessária para assinar commits ou tags.\n\n   ```shell copy\n   gpg --list-secret-keys --keyid-format=long\n   ```\n\n   > \\[!NOTE]\n   > Algumas instalações de GPG no Linux podem exigir o uso de `gpg2 --list-keys --keyid-format LONG` para ver uma lista das chaves existentes. Nesse caso, você também precisará configurar o Git para usar `gpg2` executando `git config --global gpg.program gpg2`.\n\n4. Da lista de chaves GPG, copie a forma longa do ID da chave GPG que você gostaria de usar. Neste exemplo, a ID da chave GPG é `3AA5C34371567BD2`:\n\n   ```shell copy\n   $ gpg --list-secret-keys --keyid-format=long\n   /Users/hubot/.gnupg/secring.gpg\n   ------------------------------------\n   sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]\n   uid                          Hubot <hubot@example.com>\n   ssb   4096R/4BB6D45482678BE3 2016-03-10\n   ```\n\n5. Para definir a sua chave de assinatura GPG principal no Git, cole o texto abaixo, substituindo o ID da chave GPG principal que você gostaria de usar. Neste exemplo, a ID da chave GPG é `3AA5C34371567BD2`:\n\n   ```shell\n   git config --global user.signingkey 3AA5C34371567BD2\n   ```\n\n   Como alternativa, você pode usar uma subchave. Neste exemplo, a ID da subchave GPG é `4BB6D45482678BE3`:\n\n   ```shell\n   git config --global user.signingkey 4BB6D45482678BE3\n   ```\n\n   Se você usar várias chaves e subchaves, anexe um ponto de exclamação `!` à chave para informar ao git que esta é sua chave preferida. Às vezes, pode ser necessário escapar o ponto de exclamação com uma barra invertida: `\\!`.\n\n6. Opcionalmente, para configurar o Git a fim de assinar todos os commits e rótulos por padrão, insira o seguinte comando:\n\n   ```shell\n   git config --global commit.gpgsign true\n   git config --global tag.gpgSign true\n   ```\n\n   Para saber mais, confira [Assinar commits](/pt/authentication/managing-commit-signature-verification/signing-commits).\n\n7. Se você não estiver usando o pacote GPG, execute o seguinte comando no shell do `zsh` para adicionar a chave GPG ao arquivo `.zshrc`, se houver, ou o arquivo `.zprofile`:\n\n   ```shell\n   $ if [ -r ~/.zshrc ]; then echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.zshrc; \\\n     else echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.zprofile; fi\n   ```\n\n   Como alternativa, se você usar o shell do `bash`, execute este comando:\n\n   ```shell\n   $ if [ -r ~/.bash_profile ]; then echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.bash_profile; \\\n     else echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.profile; fi\n   ```\n\n8. Opcionalmente, para solicitar que você insira um PIN ou uma senha quando necessário, instale `pinentry-mac`. Por exemplo, usando o [Homebrew](https://brew.sh/):\n\n   ```shell\n   brew install pinentry-mac\n   echo \"pinentry-program $(which pinentry-mac)\" >> ~/.gnupg/gpg-agent.conf\n   killall gpg-agent\n   ```\n\n</div>\n\n<div class=\"ghd-tool windows\">\n\nSe você estiver usando uma chave GPG que corresponde à sua identidade do autor do submissão e ao endereço de e-mail verificado associado à sua conta em GitHub.com, você poderá começar a assinar commits e tags.\n\n> \\[!NOTE]\n> Se você não tiver uma chave GPG que corresponda à identidade do committer, precisará associar um e-mail a uma chave existente. Para saber mais, confira [Associar um e-mail à chave GPG](/pt/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key).\n\nSe você tiver várias chaves GPG, precisará informar ao Git qual deve ser usada.\n\n1. Abra <span class=\"platform-mac\">Terminal</span><span class=\"platform-linux\">Terminal</span><span class=\"platform-windows\">Git Bash</span>.\n2. Se você tiver configurado anteriormente o Git para usar um formato de chave diferente ao assinar com o `--gpg-sign`, desmarque essa configuração para que o formato padrão de `openpgp` seja usado.\n\n   ```shell\n   git config --global --unset gpg.format\n   ```\n3. Use o comando `gpg --list-secret-keys --keyid-format=long` para listar a forma longa das chaves GPG para as quais você tem uma chave pública e privada. Uma chave privada é necessária para assinar commits ou tags.\n\n   ```shell copy\n   gpg --list-secret-keys --keyid-format=long\n   ```\n\n   > \\[!NOTE]\n   > Algumas instalações de GPG no Linux podem exigir o uso de `gpg2 --list-keys --keyid-format LONG` para ver uma lista das chaves existentes. Nesse caso, você também precisará configurar o Git para usar `gpg2` executando `git config --global gpg.program gpg2`.\n4. Da lista de chaves GPG, copie a forma longa do ID da chave GPG que você gostaria de usar. Neste exemplo, a ID da chave GPG é `3AA5C34371567BD2`:\n\n   ```shell copy\n   $ gpg --list-secret-keys --keyid-format=long\n   /Users/hubot/.gnupg/secring.gpg\n   ------------------------------------\n   sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]\n   uid                          Hubot <hubot@example.com>\n   ssb   4096R/4BB6D45482678BE3 2016-03-10\n   ```\n5. Para definir a sua chave de assinatura GPG principal no Git, cole o texto abaixo, substituindo o ID da chave GPG principal que você gostaria de usar. Neste exemplo, a ID da chave GPG é `3AA5C34371567BD2`:\n\n   ```shell\n   git config --global user.signingkey 3AA5C34371567BD2\n   ```\n\n   Como alternativa, você pode usar uma subchave. Neste exemplo, a ID da subchave GPG é `4BB6D45482678BE3`:\n\n   ```shell\n   git config --global user.signingkey 4BB6D45482678BE3\n   ```\n\n   Se você usar várias chaves e subchaves, anexe um ponto de exclamação `!` à chave para informar ao git que esta é sua chave preferida. Às vezes, pode ser necessário escapar o ponto de exclamação com uma barra invertida: `\\!`.\n6. Opcionalmente, para configurar o Git a fim de assinar todos os commits e rótulos por padrão, insira o seguinte comando:\n\n   ```shell\n   git config --global commit.gpgsign true\n   git config --global tag.gpgSign true\n   ```\n\n   Para saber mais, confira [Assinar commits](/pt/authentication/managing-commit-signature-verification/signing-commits).\n\n</div>\n\n<div class=\"ghd-tool linux\">\n\nSe você estiver usando uma chave GPG que corresponde à sua identidade do autor do submissão e ao endereço de e-mail verificado associado à sua conta em GitHub.com, você poderá começar a assinar commits e tags.\n\n> \\[!NOTE]\n> Se você não tiver uma chave GPG que corresponda à identidade do committer, precisará associar um e-mail a uma chave existente. Para saber mais, confira [Associar um e-mail à chave GPG](/pt/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key).\n\nSe você tiver várias chaves GPG, precisará informar ao Git qual deve ser usada.\n\n1. Abra <span class=\"platform-mac\">Terminal</span><span class=\"platform-linux\">Terminal</span><span class=\"platform-windows\">Git Bash</span>.\n2. Se você tiver configurado anteriormente o Git para usar um formato de chave diferente ao assinar com o `--gpg-sign`, desmarque essa configuração para que o formato padrão de `openpgp` seja usado.\n\n   ```shell\n   git config --global --unset gpg.format\n   ```\n3. Use o comando `gpg --list-secret-keys --keyid-format=long` para listar a forma longa das chaves GPG para as quais você tem uma chave pública e privada. Uma chave privada é necessária para assinar commits ou tags.\n\n   ```shell copy\n   gpg --list-secret-keys --keyid-format=long\n   ```\n\n   > \\[!NOTE]\n   > Algumas instalações de GPG no Linux podem exigir o uso de `gpg2 --list-keys --keyid-format LONG` para ver uma lista das chaves existentes. Nesse caso, você também precisará configurar o Git para usar `gpg2` executando `git config --global gpg.program gpg2`.\n4. Da lista de chaves GPG, copie a forma longa do ID da chave GPG que você gostaria de usar. Neste exemplo, a ID da chave GPG é `3AA5C34371567BD2`:\n\n   ```shell copy\n   $ gpg --list-secret-keys --keyid-format=long\n   /Users/hubot/.gnupg/secring.gpg\n   ------------------------------------\n   sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]\n   uid                          Hubot <hubot@example.com>\n   ssb   4096R/4BB6D45482678BE3 2016-03-10\n   ```\n5. Para definir a sua chave de assinatura GPG principal no Git, cole o texto abaixo, substituindo o ID da chave GPG principal que você gostaria de usar. Neste exemplo, a ID da chave GPG é `3AA5C34371567BD2`:\n\n   ```shell\n   git config --global user.signingkey 3AA5C34371567BD2\n   ```\n\n   Como alternativa, você pode usar uma subchave. Neste exemplo, a ID da subchave GPG é `4BB6D45482678BE3`:\n\n   ```shell\n   git config --global user.signingkey 4BB6D45482678BE3\n   ```\n\n   Se você usar várias chaves e subchaves, anexe um ponto de exclamação `!` à chave para informar ao git que esta é sua chave preferida. Às vezes, pode ser necessário escapar o ponto de exclamação com uma barra invertida: `\\!`.\n6. Opcionalmente, para configurar o Git a fim de assinar todos os commits e rótulos por padrão, insira o seguinte comando:\n\n   ```shell\n   git config --global commit.gpgsign true\n   git config --global tag.gpgSign true\n   ```\n\n   Para saber mais, confira [Assinar commits](/pt/authentication/managing-commit-signature-verification/signing-commits).\n7. Para adicionar a chave GPG ao arquivo de inicialização `.bashrc`, execute o seguinte comando:\n\n   ```bash\n   [ -f ~/.bashrc ] && echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.bashrc\n   ```\n\n</div>\n\n## Contando ao Git sobre sua chave SSH\n\nVocê pode usar uma chave SSH existente para assinar commits e tags ou gerar uma nova especificamente para assinatura. Para saber mais, confira [Gerando uma nova chave SSH e adicionando-a ao agente SSH](/pt/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).\n\n> \\[!NOTE]\n> A verificação de assinatura SSH está disponível no Git 2.34 ou posterior. Para atualizar sua versão do Git, acesse o site do [Git](https://git-scm.com/downloads).\n\n1. Abra <span class=\"platform-mac\">Terminal</span><span class=\"platform-linux\">Terminal</span><span class=\"platform-windows\">Git Bash</span>.\n2. Configure o Git para usar SSH para assinar confirmações e marcas:\n\n   ```bash\n   git config --global gpg.format ssh\n   ```\n3. Para definir a chave de assinatura SSH no Git, cole o texto abaixo, substituindo **/PATH/TO/.SSH/KEY.PUB** pela chave pública que deseja usar.\n\n   ```bash\n   git config --global user.signingkey /PATH/TO/.SSH/KEY.PUB\n   ```\n\n<div class=\"ghd-tool windows\">\n\n## Contando ao Git sobre sua chave X.509\n\nUse o [smimesign](https://github.com/github/smimesign) para assinar confirmações e marcas usando o S/MIME.\n\n> \\[!NOTE]\n> A verificação de assinatura S/MIME está disponível no Git 2.19 ou posterior. Para atualizar sua versão do Git, acesse o site do [Git](https://git-scm.com/downloads).\n\n1. Instale o [smimesign](https://github.com/github/smimesign#installation).\n\n2. Abra <span class=\"platform-mac\">Terminal</span><span class=\"platform-linux\">Terminal</span><span class=\"platform-windows\">Git Bash</span>.\n\n3. Configure o Git para usar o S/MIME para assinar commits e tags. No Git 2.19 ou posterior, use os comandos `git config gpg.x509.program` e `git config gpg.format`:\n   * Para usar o S/MIME para assinar todos os repositórios:\n\n     ```shell\n     git config --global gpg.x509.program smimesign\n     git config --global gpg.format x509\n     ```\n\n   * Para usar o S/MIME para assinar um único repositório:\n\n     ```shell\n     cd PATH-TO-REPOSITORY\n     git config --local gpg.x509.program smimesign\n     git config --local gpg.format x509\n     ```\n\n     No Git 2.18 ou anterior, use o comando `git config gpg.program`:\n\n   * Para usar o S/MIME para assinar todos os repositórios:\n\n     ```shell\n     git config --global gpg.program smimesign\n     ```\n\n   * Para usar o S/MIME para assinar um único repositório:\n\n     ```shell\n     cd  PATH-TO-REPOSITORY\n     git config --local gpg.program smimesign\n     ```\n\n     Se você estiver usando uma chave X.509 que corresponde à sua identidade do committer, poderá começar a assinar commits e tags.\n\n4. Se você não estiver usando uma chave X.509 que corresponda à identidade do autor do commit, liste as chaves X.509 para as quais você tem um certificado e uma chave privada usando o comando `smimesign --list-keys`.\n\n   ```shell\n   smimesign --list-keys\n   ```\n\n5. Da lista de chaves X.509, copie o ID de certificado da chave X.509 que gostaria de usar. Neste exemplo, a ID do certificado é `0ff455a2708394633e4bb2f88002e3cd80cbd76f`:\n\n   ```shell\n   $ smimesign --list-keys\n                ID: 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n               S/N: a2dfa7e8c9c4d1616f1009c988bb70f\n         Algorithm: SHA256-RSA\n          Validity: 2017-11-22 00:00:00 +0000 UTC - 2020-11-22 12:00:00 +0000 UTC\n            Issuer: CN=DigiCert SHA2 Assured ID CA,OU=www.digicert.com,O=DigiCert Inc,C=US\n           Subject: CN=Octocat,O=GitHub\\, Inc.,L=San Francisco,ST=California,C=US\n            Emails: octocat@github.com\n   ```\n\n6. Para definir sua chave de autenticação X.509 no Git, cole o texto abaixo, substituindo o certificado que você copiou anteriormente.\n   * Para usar sua chave X.509 para assinar para todos os repositórios:\n\n     ```shell\n     git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n   * Para usar sua chave X.509 para assinar um único repositório:\n\n     ```shell\n     cd  PATH-TO-REPOSITORY\n     git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n</div>\n\n<div class=\"ghd-tool mac\">\n\n## Contando ao Git sobre sua chave X.509\n\nUse o [smimesign](https://github.com/github/smimesign) para assinar confirmações e marcas usando o S/MIME.\n\n> \\[!NOTE]\n> A verificação de assinatura S/MIME está disponível no Git 2.19 ou posterior. Para atualizar sua versão do Git, acesse o site do [Git](https://git-scm.com/downloads).\n\n1. Instale o [smimesign](https://github.com/github/smimesign#installation).\n\n2. Abra <span class=\"platform-mac\">Terminal</span><span class=\"platform-linux\">Terminal</span><span class=\"platform-windows\">Git Bash</span>.\n\n3. Configure o Git para usar o S/MIME para assinar commits e tags. No Git 2.19 ou posterior, use os comandos `git config gpg.x509.program` e `git config gpg.format`:\n   * Para usar o S/MIME para assinar todos os repositórios:\n\n     ```shell\n     git config --global gpg.x509.program smimesign\n     git config --global gpg.format x509\n     ```\n\n   * Para usar o S/MIME para assinar um único repositório:\n\n     ```shell\n     cd PATH-TO-REPOSITORY\n     git config --local gpg.x509.program smimesign\n     git config --local gpg.format x509\n     ```\n\n     No Git 2.18 ou anterior, use o comando `git config gpg.program`:\n\n   * Para usar o S/MIME para assinar todos os repositórios:\n\n     ```shell\n     git config --global gpg.program smimesign\n     ```\n\n   * Para usar o S/MIME para assinar um único repositório:\n\n     ```shell\n     cd  PATH-TO-REPOSITORY\n     git config --local gpg.program smimesign\n     ```\n\n     Se você estiver usando uma chave X.509 que corresponde à sua identidade do committer, poderá começar a assinar commits e tags.\n\n4. Se você não estiver usando uma chave X.509 que corresponda à identidade do autor do commit, liste as chaves X.509 para as quais você tem um certificado e uma chave privada usando o comando `smimesign --list-keys`.\n\n   ```shell\n   smimesign --list-keys\n   ```\n\n5. Da lista de chaves X.509, copie o ID de certificado da chave X.509 que gostaria de usar. Neste exemplo, a ID do certificado é `0ff455a2708394633e4bb2f88002e3cd80cbd76f`:\n\n   ```shell\n   $ smimesign --list-keys\n                ID: 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n               S/N: a2dfa7e8c9c4d1616f1009c988bb70f\n         Algorithm: SHA256-RSA\n          Validity: 2017-11-22 00:00:00 +0000 UTC - 2020-11-22 12:00:00 +0000 UTC\n            Issuer: CN=DigiCert SHA2 Assured ID CA,OU=www.digicert.com,O=DigiCert Inc,C=US\n           Subject: CN=Octocat,O=GitHub\\, Inc.,L=San Francisco,ST=California,C=US\n            Emails: octocat@github.com\n   ```\n\n6. Para definir sua chave de autenticação X.509 no Git, cole o texto abaixo, substituindo o certificado que você copiou anteriormente.\n   * Para usar sua chave X.509 para assinar para todos os repositórios:\n\n     ```shell\n     git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n   * Para usar sua chave X.509 para assinar um único repositório:\n\n     ```shell\n     cd  PATH-TO-REPOSITORY\n     git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n</div>\n\n## Leitura adicional\n\n* [Adicionando uma nova chave SSH à sua conta de GitHub](/pt/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account).\n* [Assinar commits](/pt/authentication/managing-commit-signature-verification/signing-commits)\n* [Assinar tags](/pt/authentication/managing-commit-signature-verification/signing-tags)"}