Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

Sobre a verificação de assinatura de commit

Usando GPG, SSH, ou S/MIME, você pode assinar marcas e confirmações localmente. Essas tags ou commits são marcadas como verificadas no GitHub Enterprise Cloud 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 uma confirmação ou uma marca tiver uma assinatura , SSH, ou S/MIME que possa ser verificada por meio de criptografia, o GitHub Enterprise Cloud marcará o commit ou a tag como "Verificado" ou "Parcialmente verificado".

Commit verificado

Para a maioria dos usuários individuais, GPG ou SSH será a melhor opção para assinar confirmações. 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 em GitHub Enterprise Cloud 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. GitHub Enterprise Cloud mostra confirmações que foram assinadas com uma chave tida como "Verificada", a menos que a chave tenha sido marcada como comprometida. As chaves SSH não têm essa funcionalidade.

Os commits e as tags têm o status de verificação a seguir, dependendo se você habilitou o modo vigilante. Por padrão, o modo vigilante não está habilitado. Para obter mais informações sobre como habilitar o modo vigilante, confira "Como ver os status de verificação de todos os seus commits".

A assinatura de commits é diferente da aprovação de um commit. Para obter mais informações sobre como aprovar commits, confira "Como gerenciar a política de aprovação de commit para seu repositório".

Status padrão

StatusDescrição
VerificadoO commit foi assinado e a assinatura foi verificada com sucesso.
Não verificadoO commit foi assinado, mas não foi possível verificar a assinatura.
Sem status de verificaçãoO commit não foi assinado.

Verificação de assinatura para troca de base 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 obter mais informações, confira "Como trocar de base e mesclar commits".

Status com modo vigilante habilitado

StatusDescrição
VerificadoO commit foi assinado, a assinatura foi verificada com sucesso e o committer é o único autor que habilitou o modo vigilante.
Parcialmente verificadoO commit foi assinado e a assinatura foi verificada com sucesso, mas o commit tem um autor que: a) não é o committer e b) habilitou o modo vigilante. Neste caso, a assinatura de commit não garante o consentimento do autor. Portanto o commit é verificado apenas parcialmente.
Não verificadoQualquer uma das seguintes opções é verdadeira:
– O commit foi assinado, mas não foi possível verificar a assinatura.
– O commit não foi assinado, e o usuário que o fez habilitou o modo vigilante.
– O commit não foi assinado, e um autor habilitou o modo vigilante.

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 obter mais informações, confira "Sobre os branches protegidos".

Você pode conferir o status de verificação de seus commits ou tags assinados no GitHub Enterprise Cloud e ver por que as assinaturas de commit podem não ter sido verificadas. Para obter mais informações, confira "Como verificar o status do commit e da verificação de assinatura da tag".

GitHub usará automaticamente o GPG para assinar commits que você fizer usando a interface da Web. Os commits assinados por GitHub terão um status verificado. Você pode verificar a assinatura localmente usando a chave pública disponível em https://github.com/web-flow.gpg. A impressão digital completa da chave é 5DE3 E050 9C47 EA3C F04A 42D3 4AEE 18F8 3AFD EB23.

Opcionalmente, você pode fazer com que o GPG do GitHub assine as confirmações efetuados em GitHub Codespaces. Para obter mais informações de como habilitar a verificação de GPG nos codespaces, confira "Como gerenciar a verificação de GPG nos GitHub Codespaces".

Verificação da assinatura de commit GPG

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

O GitHub Enterprise Cloud usa bibliotecas OpenPGP para confirmar que seus commits e suas marcas assinados localmente são criptograficamente verificáveis em relação a uma chave pública que você adicionou à sua conta no GitHub.com.

Para assinar commits usando GPG e para que esses commits sejam verificados no GitHub Enterprise Cloud, siga estas etapas:

  1. Verificar se há chaves GPG existentes
  2. Gerar uma nova chave GPG
  3. Adicionar uma chave GPG à conta do GitHub
  4. Informar o Git sobre a chave de assinatura
  5. Assinar commits
  6. Assinar 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 GitHub Enterprise Cloud, 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.

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

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.

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

  1. Verifique se há chaves SSH existentes
  2. Gere uma nova chave SSH
  3. Adicionar uma chave de assinatura SSH à sua conta do GitHub
  4. Informar o Git sobre a chave de assinatura
  5. Assinar commits
  6. Assinar 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 Enterprise Cloud 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 commits usando S/MIME e para que esses commits sejam verificados no GitHub Enterprise Cloud, siga estas etapas:

  1. Informar o Git sobre a chave de assinatura
  2. Assinar commits
  3. Assinar tags

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

Verificação de assinatura para bots

As organizações e GitHub Apps que exigem a assinatura de commit podem usar bots para assinar commits. Se um commit ou uma tag tiver uma assinatura de bot que possa ser verificada de maneira criptográfica, o GitHub Enterprise Cloud marcará o commit ou tag como verificado.

A verificação de assinatura para bots somente funcionará se a solicitação for verificada e autenticada como o GitHub App ou bot e se não tiver informações de autor personalizadas, informações de committer personalizadas e nenhuma informação de assinatura personalizada, como API de commits.

Leitura adicional