Skip to main content

Sobre a verificação de assinatura de commit

Usando GPG, SSH ou S/MIME, você pode assinar tags e commits localmente. Essas tags ou commits são marcadas como verificadas no GitHub para que outras pessoas possam ter certeza de que as alterações vêm de uma fonte confiável.

Sobre a verificação de assinatura de commit

Você pode assinar commits e tags localmente para dar a outras pessoas confiança sobre a origem de uma alteração que você fez. Se um commit ou tag tiver uma assinatura GPG, SSH ou S/MIME que possa ser verificada criptograficamente, o marca o commit ou a tag como "Verificado."

Captura de tela de um commit na lista de commits de um repositório. A opção "Verificado" é realçada com um contorno laranja.

Se um commit ou uma tag tiver uma assinatura que não possa ser verificada, o GitHub marcará o commit ou a tag como "Unverified".

Para a maioria dos usuários individuais, a melhor opção para assinar commits é GPG ou SSH. As assinaturas S/MIME geralmente são necessárias no contexto de uma organização maior. As assinaturas SSH são as mais simples de serem geradas. Você pode até mesmo carregar sua chave de autenticação existente no GitHub para também usar como uma chave de assinatura. A geração de uma chave de assinatura GPG está mais envolvida do que a geração de uma chave SSH, mas a GPG conta com recursos que a SSH não tem. Uma chave GPG pode expirar ou ser revogada quando não for mais usada. A assinatura do GPG pode incluir informações sobre ele ter expirado ou ter sido revogado.

Verificação de assinatura para rebase e mesclagem

Ao usar a opção Trocar base e Mesclar em uma solicitação de pull, é importante observar que os commits no branch principal são adicionados ao branch base sem verificação de assinatura de commit. Quando você usa essa opção, o GitHub cria um commit modificado usando os dados e o conteúdo do commit original. Isso significa que o GitHub não criou de fato esse commit e, portanto, não pode assiná-lo como um usuário genérico do sistema. O GitHub não tem acesso às chaves de assinatura privadas do responsável pelo commit, portanto, não pode assinar o commit em nome do usuário.

Uma solução alternativa é trocar a base e fazer a mesclagem localmente e depois enviar as alterações por push ao branch base da solicitação de pull.

Para saber mais, confira Sobre métodos de mesclagem no GitHub.

Os administradores do repositório podem impor a assinatura de commit obrigatória em um branch para bloquear todos os commits que não estejam assinados e verificados. Para saber mais, confira Sobre os branches protegidos.

Se um administrador do site tiver habilitado a assinatura de commit web, GitHub usará automaticamente o GPG para assinar commits que você fizer usando a interface web. Os commits assinados pelo GitHub terão um status verificado. Você pode verificar a assinatura localmente usando a chave pública disponível em https://HOSTNAME/web-flow.gpg. Para saber mais, confira Configuração da assinatura de commit na Web.

Verificação da assinatura de commit GPG

É possível usar GPG para assinar commits com uma chave GPG que você mesmo gera.

O GitHub usa bibliotecas OpenPGP para confirmar que seus commits e tags assinados localmente são criptograficamente verificáveis por meio de uma chave pública que você adicionou à sua conta em sua instância do GitHub Enterprise Server.

Para assinar commits usando GPG e obter a verificação desses commits no GitHub, siga estes passos:

  1.        [Verificar se há chaves GPG existentes](/authentication/managing-commit-signature-verification/checking-for-existing-gpg-keys)
    
  2.        [Gerar uma nova chave GPG](/authentication/managing-commit-signature-verification/generating-a-new-gpg-key)
    
  3.        [Add uma chave GPG para sua conta GitHub](/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account)
    
  4.        [Informar o Git sobre a chave de assinatura](/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)
    
  5.        [Assinar commits](/authentication/managing-commit-signature-verification/signing-commits)
    
  6.        [Assinar marcas](/authentication/managing-commit-signature-verification/signing-tags)
    

Verificação da assinatura de confirmação do GPG

É possível usar SSH para assinar commits com uma chave SSH que você mesmo gerou. Para saber mais, confira a documentação de referência do Git com relação a user.Signingkey. Se você já usa uma chave SSH para autenticar com o GitHub, também pode carregar essa mesma chave novamente para uso como uma chave de assinatura. Não há limite quanto ao número de chaves de assinatura que você pode adicionar à sua conta.

GitHub usa ssh_data, uma biblioteca Ruby de código aberto, para confirmar que seus commits e tags assinados localmente são criptograficamente verificáveis em relação a uma chave pública que você adicionou à sua conta no sua instância do GitHub Enterprise Server.

Observação

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.

Para assinar confirmações usando SSH e para que esses confirmações sejam verificadas em GitHub, siga estas etapas:

  1.        [Verifique se há chaves SSH existentes](/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys)
    
  2.        [Gere uma nova chave SSH](/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)
    
  3.        [Add uma chave de assinatura SSH para sua conta GitHub](/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)
    
  4.        [Informar o Git sobre a chave de assinatura](/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)
    
  5.        [Assinar commits](/authentication/managing-commit-signature-verification/signing-commits)
    
  6.        [Assinar marcas](/authentication/managing-commit-signature-verification/signing-tags)
    

Verificação da assinatura de commit S/MIME

Você pode usar S/MIME para assinar commits com uma chave X.509 emitida pela organização.

O GitHub usa o pacote ca-certificates do Debian, o mesmo repositório confiável usado pelos navegadores Mozilla, para confirmar que as tags e os commits assinados localmente são criptograficamente verificáveis em relação a uma chave pública em um certificado raiz confiável.

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.

Para assinar confirmações usando S/MIME e para que esses confirmações sejam verificadas em GitHub, siga estas etapas:

  1.        [Informar o Git sobre a chave de assinatura](/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)
    
  2.        [Assinar commits](/authentication/managing-commit-signature-verification/signing-commits)
    
  3.        [Assinar marcas](/authentication/managing-commit-signature-verification/signing-tags)
    

Não é preciso fazer upload da chave pública no GitHub.

Leitura adicional

  •         [AUTOTITLE](/authentication/managing-commit-signature-verification/signing-commits)
    
  •         [AUTOTITLE](/authentication/managing-commit-signature-verification/signing-tags)
    
  •         [AUTOTITLE](/authentication/troubleshooting-commit-signature-verification)