{"meta":{"title":"Sobre a verificação de assinatura de commit","intro":"Usando GPG, SSH ou S/MIME, você pode assinar tags e commits localmente. Essas tags ou commits são identificados como verificados em GitHub para que outras pessoas possam confiar que as alterações vêm de uma fonte confiável.","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/about-commit-signature-verification","title":"Verificação de assinatura de commit"}],"documentType":"article"},"body":"# Sobre a verificação de assinatura de commit\n\nUsando GPG, SSH ou S/MIME, você pode assinar tags e commits localmente. Essas tags ou commits são identificados como verificados em GitHub para que outras pessoas possam confiar que as alterações vêm de uma fonte confiável.\n\n## Sobre a verificação de assinatura de commit\n\nVocê 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 marca tiver uma assinatura GPG, SSH ou S/MIME que seja criptograficamente verificável, GitHub marcará a confirmação ou marca \"Verificado\" ou \"Parcialmente verificado\".\n\n![Captura de tela de um commit na lista de commits de um repositório. A opção \"Verificado\" é realçada com um contorno laranja.](/assets/images/help/commits/verified-commit.png)\n\nPara 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é fazer upload da sua chave de autenticação existente para GitHub para também usá-la como 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.\n\nOs 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 informações sobre como habilitar o modo vigilante, confira [Exibindo status de verificação para todos os seus commits](/pt/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits).\n\nA assinatura de commits é diferente da aprovação de um commit. Para obter mais informações sobre a aprovação de confirmações, consulte [Como gerenciar a política de aprovação de confirmação para seu repositório](/pt/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-commit-signoff-policy-for-your-repository).\n\n### Status padrão\n\n| Estado                    | Descrição                                                             |\n| ------------------------- | --------------------------------------------------------------------- |\n| **Verificada**            | A commitação está assinada e a assinatura foi verificada com sucesso. |\n| **Não verificado**        | O commit foi assinado, mas não foi possível verificar a assinatura.   |\n| Sem status de verificação | O commit não foi assinado.                                            |\n\n### Verificação da assinatura de commit persistente\n\nIndependentemente da opção de assinatura – GPG, SSH ou S/MIME –, uma vez que uma assinatura de commit é verificada, ela permanece verificada na rede de seu repositório. Confira [Entender conexões entre repositórios](/pt/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories).\n\nQuando uma assinatura do commit é verificada ao ser enviada por push para GitHub, um registro de verificação é armazenado associado ao commit. Esse registro não pode ser editado e persistirá para que as assinaturas permaneçam verificadas ao longo do tempo, mesmo se as chaves de assinatura forem giradas, revogadas ou se os colaboradores deixarem a organização.\n\nO registro de verificação inclui uma marcação de carimbo de data/hora de quando a verificação foi concluída. Esse registro persistente garante um estado verificado consistente, fornecendo um histórico estável de contribuições dentro do repositório. Você pode ver essa data e hora passando o mouse sobre o selo \"Verificado\" no GitHub ou acessando o commit por meio da API REST, que inclui um campo `verified_at`. Confira [Pontos de extremidade da API REST para commits](/pt/rest/commits/commits).\n\nA verificação persistente de assinatura de commits se aplica a novos commits enviados para GitHub. Para quaisquer commits anteriores a este recurso, um registro persistente será criado na próxima vez que a assinatura do commit for verificada em GitHub, ajudando a garantir que os status de verificação permaneçam estáveis e confiáveis ao longo do histórico do repositório.\n\n#### Os registros persistem mesmo após a revogação e expiração\n\nA verificação persistente da assinatura do commit reflete o estado de verificação de um commit no momento em que a verificação é realizada. Isso significa que, se uma chave de assinatura for revogada, expirada ou alterada de outra forma, os commits verificados anteriormente manterão seu status verificado com base no registro criado durante a verificação inicial.\nGitHub não verificará novamente confirmações assinadas anteriormente ou ajustará retroativamente seu status de verificação em resposta a alterações no estado da chave. As organizações podem precisar gerenciar estados de chaves diretamente para se alinharem às suas políticas de segurança, especialmente se a rotação ou revogação de chaves frequentes for planejada.\n\n#### O registro de verificação está limitado à sua rede de repositórios\n\nO registro de verificação é persistente na rede do repositório, o que significa que, se o mesmo commit for enviado novamente para o mesmo repositório ou para qualquer uma de suas bifurcações, o registro de verificação existente será reutilizado. Isso permite que GitHub mantenha um status de verificação consistente em todos os repositórios relacionados, sem reverificar o commit cada vez que ele aparece dentro da rede. Essa persistência reforça uma visão unificada e confiável da autenticidade do commit em todas as ocorrências dentro da rede de repositórios.\n\n### Verificação de assinatura para rebase e mesclagem\n\nAo 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.\nQuando 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.\nO 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.\n\nUma 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.\n\nPara saber mais, confira [Sobre métodos de mesclagem no GitHub](/pt/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/about-merge-methods-on-github#rebasing-and-merging-your-commits).\n\n### Status com modo vigilante habilitado\n\n| Status                      | Descrição                                                                                                                                                                                                                                                                             |\n| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **Verificado**              | O commit foi assinado, a assinatura foi verificada com sucesso e o committer é o único autor que habilitou o modo vigilante.                                                                                                                                                          |\n| **Parcialmente verificado** | O 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| **Não verificado**          | Qualquer uma das seguintes opções é verdadeira:<br>– O commit foi assinado, mas não foi possível verificar a assinatura.<br>– O commit não foi assinado, e o usuário que o fez habilitou o modo vigilante.<br>– O commit não foi assinado, e um autor habilitou o modo vigilante.<br> |\n\nOs 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 branches protegidos](/pt/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-signed-commits).\n\nVocê pode conferir o status de verificação de seus commits ou tags assinados no GitHub e ver por que as assinaturas de commit podem não ter sido verificadas. Para saber mais, confira [Confirmar o status de verificação da assinatura do commit e da tag](/pt/authentication/troubleshooting-commit-signature-verification/checking-your-commit-and-tag-signature-verification-status).\n\nGitHub usará automaticamente o GPG para assinar os commits que você fizer usando a interface web. Os commits assinados por GitHub terão status verificado. Você pode verificar a assinatura localmente usando a chave pública disponível em <https://github.com/web-flow.gpg>.\n\nOpcionalmente, você pode optar por ter os commits que você fizer em GitHub assinados com GPG por GitHub Codespaces. Para obter mais informações sobre como habilitar a verificação de GPG para seus codespaces, consulte [Gerenciando a verificação GPG para GitHub Codespaces](/pt/codespaces/managing-your-codespaces/managing-gpg-verification-for-github-codespaces).\n\n## Verificação da assinatura de commit GPG\n\nÉ possível usar GPG para assinar commits com uma chave GPG que você mesmo gera.\n\nGitHub usa bibliotecas OpenPGP 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 GitHub.com.\n\nPara assinar commits usando GPG e ter esses commits verificados em GitHub, siga estas etapas:\n\n1. [Verificar se há chaves GPG existentes](/pt/authentication/managing-commit-signature-verification/checking-for-existing-gpg-keys)\n2. [Gerar uma nova chave GPG](/pt/authentication/managing-commit-signature-verification/generating-a-new-gpg-key)\n3. [Add uma chave GPG para sua conta GitHub](/pt/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account)\n4. [Informar o Git sobre a chave de assinatura](/pt/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)\n5. [Assinar commits](/pt/authentication/managing-commit-signature-verification/signing-commits)\n6. [Assinar marcas](/pt/authentication/managing-commit-signature-verification/signing-tags)\n\n## Verificação da assinatura de confirmação do GPG\n\nÉ 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](https://git-scm.com/docs/git-config#Documentation/git-config.txt-usersigningKey) com relação a `user.Signingkey`. Se você já usa uma chave SSH para se autenticar com GitHub, também pode enviar essa mesma chave novamente para usá-la como chave de assinatura. Não há limite quanto ao número de chaves de assinatura que você pode adicionar à sua conta.\n\nGitHub usa [ssh\\_data](https://github.com/github/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 em GitHub.com.\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\nPara assinar commits usando SSH e ter esses commits verificados em GitHub, siga estas etapas:\n\n1. [Verifique se há chaves SSH existentes](/pt/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys)\n2. [Gere uma nova chave SSH](/pt/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)\n3. [Add uma chave de assinatura SSH para sua conta GitHub](/pt/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)\n4. [Informar o Git sobre a chave de assinatura](/pt/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)\n5. [Assinar commits](/pt/authentication/managing-commit-signature-verification/signing-commits)\n6. [Assinar marcas](/pt/authentication/managing-commit-signature-verification/signing-tags)\n\n## Verificação da assinatura de commit S/MIME\n\nVocê pode usar S/MIME para assinar commits com uma chave X.509 emitida pela organização.\n\nGitHub usa [o pacote de certificados ca do Debian](https://packages.debian.org/bullseye/ca-certificates), o mesmo repositório de confiança usado pelos navegadores Mozilla, para confirmar que suas confirmações e marcas assinadas localmente são verificáveis criptograficamente em relação a uma chave pública em um certificado raiz confiável.\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\nPara assinar commits usando S/MIME e ter esses commits verificados em GitHub, siga estas etapas:\n\n1. [Informar o Git sobre a chave de assinatura](/pt/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)\n2. [Assinar commits](/pt/authentication/managing-commit-signature-verification/signing-commits)\n3. [Assinar marcas](/pt/authentication/managing-commit-signature-verification/signing-tags)\n\nVocê não precisa carregar sua chave pública para GitHub.\n\n## Verificação de assinatura para bots\n\nOrganizações e GitHub Apps que exigem assinatura de commits podem usar bots para assinar commits. Se uma confirmação ou marca tiver uma assinatura de bot que seja criptograficamente verificável, GitHub marque a confirmação ou marca como verificada.\n\nA verificação de assinatura para bots só funcionará se a solicitação for verificada e autenticada como GitHub App ou bot e não contiver informações personalizadas de autor, informações personalizadas de committer nem informações personalizadas de assinatura, como na Commits API.\n\n## Leitura adicional\n\n* [Assinar commits](/pt/authentication/managing-commit-signature-verification/signing-commits)\n* [Assinar tags](/pt/authentication/managing-commit-signature-verification/signing-tags)\n* [Resolução de problemas de verificação de assinatura de commit](/pt/authentication/troubleshooting-commit-signature-verification)"}