Skip to main content
Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais atualizadas, acesse a documentação em inglês.

Informar ao Git sobre a chave de assinatura

Para assinar confirmações localmente, você precisa informar ao Git que há uma chave GPG, SSH, ou X.509 que você gostaria de usar.

Informar ao Git sobre a chave GPG

Se 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.

Se você não tiver uma chave GPG que corresponda à identidade do committer, precisará associar um e-mail a uma chave existente. Para obter mais informações, confira "Associar um e-mail à chave GPG".

Se você tiver várias chaves GPG, precisará informar ao Git qual deve ser usada.

  1. Abra TerminalTerminalGit Bash. 1. 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.

    $ git config --global --unset gpg.format
    ``` 1. 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.
    
    ```shell{:copy}
    $ gpg --list-secret-keys --keyid-format=long
    

    Observação: 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.

    1. 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`: ```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/4BB6D45482678BE3 2016-03-10 ``` 1. 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`:
    $ git config --global user.signingkey 3AA5C34371567BD2
    Como alternativa, ao definir uma subchave, inclua o sufixo `!`. Neste exemplo, a ID da subchave GPG é `4BB6D45482678BE3`:
    $ git config --global user.signingkey 4BB6D45482678BE3!
    1. Opcionalmente, para configurar o Git a fim de assinar todos os commits por padrão, insira o seguinte comando:
    $ git config --global commit.gpgsign true
    

    Para obter mais informações, confira "Assinar commits".

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

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

    Como alternativa, se você usar o shell do bash, execute este comando:

    $ if [ -r ~/.bash_profile ]; then echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile; \
      else echo 'export GPG_TTY=$(tty)' >> ~/.profile; fi
  3. Opcionalmente, para solicitar que você insira um PIN ou uma senha quando necessário, instale pinentry-mac. Por exemplo, usando o Homebrew:

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

Se 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.

Se você não tiver uma chave GPG que corresponda à identidade do committer, precisará associar um e-mail a uma chave existente. Para obter mais informações, confira "Associar um e-mail à chave GPG".

Se você tiver várias chaves GPG, precisará informar ao Git qual deve ser usada.

  1. Abra TerminalTerminalGit Bash. 1. 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.

    $ git config --global --unset gpg.format
    ``` 1. 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.
    
    ```shell{:copy}
    $ gpg --list-secret-keys --keyid-format=long
    

    Observação: 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.

    1. 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`: ```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/4BB6D45482678BE3 2016-03-10 ``` 1. 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`:
    $ git config --global user.signingkey 3AA5C34371567BD2
    Como alternativa, ao definir uma subchave, inclua o sufixo `!`. Neste exemplo, a ID da subchave GPG é `4BB6D45482678BE3`:
    $ git config --global user.signingkey 4BB6D45482678BE3!
    1. Opcionalmente, para configurar o Git a fim de assinar todos os commits por padrão, insira o seguinte comando:
    $ git config --global commit.gpgsign true
    

    Para obter mais informações, confira "Assinar commits".

Se 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.

Se você não tiver uma chave GPG que corresponda à identidade do committer, precisará associar um e-mail a uma chave existente. Para obter mais informações, confira "Associar um e-mail à chave GPG".

Se você tiver várias chaves GPG, precisará informar ao Git qual deve ser usada.

  1. Abra TerminalTerminalGit Bash. 1. 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.

    $ git config --global --unset gpg.format
    ``` 1. 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.
    
    ```shell{:copy}
    $ gpg --list-secret-keys --keyid-format=long
    

    Observação: 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.

    1. 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`: ```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/4BB6D45482678BE3 2016-03-10 ``` 1. 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`:
    $ git config --global user.signingkey 3AA5C34371567BD2
    Como alternativa, ao definir uma subchave, inclua o sufixo `!`. Neste exemplo, a ID da subchave GPG é `4BB6D45482678BE3`:
    $ git config --global user.signingkey 4BB6D45482678BE3!
    1. Opcionalmente, para configurar o Git a fim de assinar todos os commits por padrão, insira o seguinte comando:
    $ git config --global commit.gpgsign true
    

    Para obter mais informações, confira "Assinar commits".

  2. Para adicionar a chave GPG ao arquivo de inicialização .bashrc, execute o seguinte comando:

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

Contando ao Git sobre sua chave SSH

Você pode usar uma chave SSH existente para assinar confirmações e marcas ou gerar uma nova especificamente para assinatura. Para obter mais informações, confira "Gerando uma nova chave SSH e adicionando-a ao agente SSH".

Observação: a verificação de assinatura SSH está disponível no Git 2.34 ou versão posterior. Para atualizar sua versão do Git, acesse o site do Git.

  1. Abra TerminalTerminalGit Bash. 1. Configure o Git para usar SSH para assinar confirmações e marcas:
    $ git config --global gpg.format ssh
    ``` 1. Para definir a chave de assinatura SSH no Git, cole o texto abaixo, substituindo **/PATH/TO/KEY.PUB** pela chave pública que deseja usar.
    ```bash
    $ git config --global user.signingkey /PATH/TO/.SSH/KEY.PUB
    

Contando ao Git sobre sua chave X.509

Use o smimesign para assinar confirmações e marcas usando o S/MIME.

Observação: 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.

  1. Instale o smimesign.
  2. Abra TerminalTerminalGit Bash.
  3. 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:
  • Para usar o S/MIME para assinar todos os repositórios:
    $ git config --global gpg.x509.program smimesign
    $ git config --global gpg.format x509
  • Para usar o S/MIME para assinar um único repositório:
    $ cd PATH-TO-REPOSITORY
    $ git config --local gpg.x509.program smimesign
    $ git config --local gpg.format x509
    No Git 2.18 ou anterior, use o comando git config gpg.program:
  • Para usar o S/MIME para assinar todos os repositórios:
    $ git config --global gpg.program smimesign
  • Para usar o S/MIME para assinar um único repositório:
    $ cd  PATH-TO-REPOSITORY
    $ git config --local gpg.program smimesign
    Se você estiver usando uma chave X.509 que corresponde à sua identidade do committer, poderá começar a assinar commits e tags.
  1. 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.
    $ smimesign --list-keys
  2. 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:
    $ 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. Para definir sua chave de autenticação X.509 no Git, cole o texto abaixo, substituindo o certificado que você copiou anteriormente.
  • Para usar sua chave X.509 para assinar para todos os repositórios:
    $ git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f
  • Para usar sua chave X.509 para assinar um único repositório:
    $ cd  PATH-TO-REPOSITORY
    $ git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f

Leitura adicional