{"meta":{"title":"Сведения о проверке подписи фиксации","intro":"С помощью GPG, SSH или S/MIME можно подписывать теги и фиксации локально. Эти теги или коммиты помечаются как проверенные GitHub , чтобы другие люди могли быть уверены, что изменения исходят из надёжного источника.","product":"Проверка подлинности","breadcrumbs":[{"href":"/ru/authentication","title":"Проверка подлинности"},{"href":"/ru/authentication/managing-commit-signature-verification","title":"Проверка подписей фиксации"},{"href":"/ru/authentication/managing-commit-signature-verification/about-commit-signature-verification","title":"Проверка подписи фиксации"}],"documentType":"article"},"body":"# Сведения о проверке подписи фиксации\n\nС помощью GPG, SSH или S/MIME можно подписывать теги и фиксации локально. Эти теги или коммиты помечаются как проверенные GitHub , чтобы другие люди могли быть уверены, что изменения исходят из надёжного источника.\n\n## Сведения о проверке подписи фиксации\n\nВы можете локально подписывать фиксации и теги, чтобы обеспечить для других пользователей уверенность в происхождении внесенных изменений. Если у коммита или тега есть подпись GPG, SSH или S/MIME, поддающаяся криптографической проверке, GitHub фикс или тег отмечается как «Verified» или «Partial verified.\n\n![Снимок экрана: фиксация в списке фиксаций для репозитория. \"Проверено\" выделено оранжевым контуром.](/assets/images/help/commits/verified-commit.png)\n\nДля большинства отдельных пользователей GPG или SSH будет лучшим выбором для подписывания фиксаций. Подписи S/MIME обычно требуются в контексте более крупной организации. Подписи SSH создавать проще всего. Вы даже можете загрузить свой существующий ключ GitHub аутентификации, чтобы использовать его как ключ для подписи. Создание ключа подписывания GPG сложнее создания ключа SSH, но в GPG есть функции, отсутствующие у SSH. Если ключ GPG больше не используется, может истечь срок его действия или он может быть отозван. Подпись GPG может включать сведения об истечении срока действия или отмене.\n\nФиксации и теги имеют следующие состояния проверки в зависимости от того, включен ли режим бдительности. По умолчанию режим бдительности не включен. Сведения о включении режима бдения см. в разделе [Отображение состояний проверки для всех фиксаций](/ru/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits).\n\nПодписывание фиксаций отличается от утверждения фиксации. Дополнительные сведения о выходе из фиксаций см. в разделе [Управление политикой утверждения фиксаций для репозитория](/ru/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-commit-signoff-policy-for-your-repository).\n\n### Состояния по умолчанию\n\n| Состояние                      | Description                                      |\n| ------------------------------ | ------------------------------------------------ |\n| **Проверено**                  | Фиксация подписана, а подпись успешно проверена. |\n| **Непроверенные**              | Фиксация подписана, но подпись нельзя проверить. |\n| Состояние проверки отсутствует | Фиксация не подписана.                           |\n\n### Проверка подписи сохраняемой фиксации\n\nНезависимо от выбора подписи — GPG, SSH или S/MIME — после проверки подписи фиксации она остается проверенной в сети своего репозитория. См [. раздел AUTOTITLE](/ru/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories).\n\nКогда подпись коммита проверяется при отправке в GitHub, рядом с коммитом сохраняется запись подтверждения. Эта запись не может быть изменена и сохранится, чтобы подписи оставались проверенными с течением времени, даже если ключи подписи поворачиваются, отзываются или если участники покидают организацию.\n\nЗапись проверки включает метку времени при завершении проверки. Эта постоянная запись гарантирует согласованное проверенное состояние, предоставляя стабильный журнал вкладов в репозитории. Вы можете просмотреть эту временную метку, наведя курсор на значок «Verified» или GitHub получив доступ к коммиту через REST API, который содержит `verified_at` поле. См [. раздел AUTOTITLE](/ru/rest/commits/commits).\n\nПостоянная проверка подписи коммита применяется к новым коммитам, отправленным в GitHub. Для любых коммитов, появившихся до этой функции, при следующей проверке GitHubподписи коммита будет создана постоянная запись, что поможет гарантировать стабильность и надёжность проверенных статусов на протяжении всей истории репозитория.\n\n#### Записи сохраняются даже после отзыва и истечения срока действия\n\nПроверка подписи сохраняемой фиксации отражает проверенное состояние фиксации во время проверки. Это означает, что если ключ подписи позже отозван, истек или изменен, ранее проверенные фиксации сохраняют их проверенное состояние на основе записи, созданной во время начальной проверки.\nGitHub не будет повторно проверять ранее подписанные коммиты и ретроспективно корректировать их статус верификации в ответ на изменения состояния ключа. Организациям может потребоваться управлять ключевыми состояниями напрямую, чтобы соответствовать их политикам безопасности, особенно если планируется частое смена ключей или отмена.\n\n#### Запись проверки распространяется на сеть репозитория.\n\nЗапись проверки сохраняется в сети репозитория, то есть если одна и та же фиксация отправляется повторно в тот же репозиторий или в любой из его вилок, существующая запись проверки повторно используется. Это позволяет GitHub поддерживать согласованный верифицированный статус между связанными репозиториями без повторной проверки коммита при его появлении в сети. Это сохраняемость усиливает единое и надежное представление подлинности фиксации во всех экземплярах фиксации в сети репозитория.\n\n### Проверка подписи для перемещения из одной ветви в другую и слияния\n\nПри использовании варианта **Перемещение и слияние** для запроса на вытягивание важно помнить, что фиксации в головной ветви добавляются в базовую ветвь без проверки подписи фиксации.\nПри использовании этого варианта GitHub создает измененную фиксацию, используя данные и содержимое исходной фиксации. Это означает, что GitHub не создает новую фиксацию и не может подписать ее как обычный пользователь системы.\nGitHub не имеет доступа к закрытым ключам для подписывания этой фиксации, поэтому не может подписать фиксацию от имени пользователя.\n\nЧтобы обойти это ограничение, следует переместить изменения из одной ветви в другую и объединить их локально, а затем отправить изменения в базовую ветвь запроса на вытягивание.\n\nДополнительные сведения см. в разделе [О методах слияния на GitHub](/ru/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/about-merge-methods-on-github#rebasing-and-merging-your-commits).\n\n### Состояния с включенным режимом бдительности\n\n| Состояние              | Description                                                                                                                                                                                                                                                        |\n| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| **Проверено**          | Фиксация подписана, подпись успешно проверена, а пользователь, выполнивший фиксацию — единственный автор, который включил строгий режим.                                                                                                                           |\n| **Частично проверено** | Фиксация подписана, и подпись успешно проверена, но у фиксации есть автор, который: a) не является автором фиксации, и б) включил строгий режим. В этом случае подписывание фиксации не гарантирует согласие автора, поэтому фиксация проверяется только частично. |\n| **Непроверенные**      | Любое из следующих утверждений верно:<br>— фиксация подписана, но подпись невозможно проверить;<br>— фиксация не подписана, и автор фиксации включил строгий режим;<br>— фиксация не подписана, и автор включил строгий режим.<br>                                 |\n\nАдминистраторы репозитория могут принудительно применить обязательное подписание фиксации в ветви, чтобы заблокировать все неподписанные и непроверенные фиксации. Дополнительные сведения см. в разделе [Сведения о защищенных ветвях](/ru/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-signed-commits).\n\nВы можете проверить состояние проверки подписанных фиксаций или тегов на GitHub и просмотреть, почему подписи фиксации могут быть непроверены. Дополнительные сведения см. в разделе [Проверка состояния проверки сигнатуры фиксации и тега](/ru/authentication/troubleshooting-commit-signature-verification/checking-your-commit-and-tag-signature-verification-status).\n\nGitHub будет автоматически использовать GPG для подписания коммитов, которые вы создаёте через веб-интерфейс. Коммиты, подписанные GitHub , будут иметь подтверждённый статус. Вы можете проверить подпись локально с помощью открытого ключа, доступного по адресу <https://github.com/web-flow.gpg>.\n\nПо желанию вы можете выбрать, чтобы GitHub GPG sign commits вы делали в GitHub Codespaces. Для получения дополнительной информации об включении верификации GPG для ваших кодовых пространств см. [AUTOTITLE.](/ru/codespaces/managing-your-codespaces/managing-gpg-verification-for-github-codespaces)\n\n## Проверка GPG подписи фиксации\n\nВы можете использовать GPG для подписывания фиксаций с помощью ключа GPG, который вы создаете самостоятельно.\n\nGitHub использует библиотеки OpenPGP, чтобы подтвердить, что ваши локально подписанные коммиты и теги криптографически проверяются по публичному ключу, который вы добавили в аккаунт на GitHub.com.\n\nЧтобы подписать коммиты с помощью GPG и подтвердить эти коммиты на GitHub, следуйте следующим шагам:\n\n1. [Проверьте наличие существующих ключей GPG](/ru/authentication/managing-commit-signature-verification/checking-for-existing-gpg-keys).\n2. [Создайте новый ключ GPG](/ru/authentication/managing-commit-signature-verification/generating-a-new-gpg-key).\n3. [Добавьте GPG-ключ в свой GitHub аккаунт](/ru/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account)\n4. [Расскажите в Git о ключе для подписывания](/ru/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key).\n5. [Подпишите фиксации](/ru/authentication/managing-commit-signature-verification/signing-commits).\n6. [Подпишите теги](/ru/authentication/managing-commit-signature-verification/signing-tags).\n\n## Проверка подписи фиксаций SSH\n\nВы можете использовать SSH для подписывания фиксаций с помощью ключа SSH, который вы создаете самостоятельно. Дополнительные сведения см. в справочной [документации](https://git-scm.com/docs/git-config#Documentation/git-config.txt-usersigningKey) по Git.`user.Signingkey` Если вы уже используете SSH-ключ для аутентификации GitHub, вы также можете снова загрузить этот же ключ для использования в качестве ключа подписи. Количество ключей подписывания, которые можно добавить в учетную запись, не ограничено.\n\nGitHub использует [ssh\\_data](https://github.com/github/ssh_data), библиотеку открытый код Ruby, чтобы подтвердить, что ваши локально подписанные коммиты и теги криптографически проверяются по публичному ключу, добавленному в аккаунт GitHub.com.\n\n> \\[!NOTE]\n> Проверка подписи SSH доступна в Git 2.34 или более поздней версии. Сведения об обновлении версии Git см. на веб-сайте [Git](https://git-scm.com/downloads).\n\nЧтобы подписать коммиты с помощью SSH и подтвердить эти коммиты GitHub, следуйте следующим шагам:\n\n1. [Проверьте существующие ключи SSH](/ru/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys)\n2. [Создание нового ключа SSH](/ru/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)\n3. [Добавьте ключ SSH для подписи в свой GitHub аккаунт](/ru/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)\n4. [Расскажите в Git о ключе для подписывания](/ru/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key).\n5. [Подпишите фиксации](/ru/authentication/managing-commit-signature-verification/signing-commits).\n6. [Подпишите теги](/ru/authentication/managing-commit-signature-verification/signing-tags).\n\n## Проверка S/MIME подписи фиксации\n\nВы можете использовать S/MIME для подписывания фиксаций с помощью ключа X.509, выданного вашей организацией.\n\nGitHub использует [пакет Debian ca-certificates](https://packages.debian.org/bullseye/ca-certificates), тот же хранилище доверия, что и браузеры Mozilla, чтобы подтвердить, что ваши локально подписанные коммиты и теги криптографически проверяются по публичному ключу в доверенном корневом сертификате.\n\n> \\[!NOTE]\n> Проверка подписи S/MIME доступна в Git 2.19 или более поздней версии. Сведения об обновлении версии Git см. на веб-сайте [Git](https://git-scm.com/downloads).\n\nЧтобы подписать коммиты с помощью S/MIME и подтвердить эти коммиты GitHub, следуйте следующим шагам:\n\n1. [Расскажите в Git о ключе для подписывания](/ru/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key).\n2. [Подпишите фиксации](/ru/authentication/managing-commit-signature-verification/signing-commits).\n3. [Подпишите теги](/ru/authentication/managing-commit-signature-verification/signing-tags).\n\nВам не нужно загружать свой публичный ключ в GitHub.\n\n## Проверка подписи для ботов\n\nОрганизации, GitHub Apps требующие подписания коммитов, могут использовать ботов для подписания коммитов. Если у коммита или тега есть криптографически верифицируемая подпись бота, GitHub фиксация или тег отмечается как проверенные.\n\nПроверка подписи для ботов будет работать только в том случае, если запрос проверен и аутентифицирован как GitHub App бот или и не содержит информации о пользовательском авторе, пользовательском коммиттере и не содержит пользовательских сигнатур, таких как API Commits.\n\n## Дополнительные материалы\n\n* [Подписание фиксаций](/ru/authentication/managing-commit-signature-verification/signing-commits)\n* [Подписывание тегов](/ru/authentication/managing-commit-signature-verification/signing-tags)\n* [Устранение неполадок с проверкой подписи фиксации](/ru/authentication/troubleshooting-commit-signature-verification)"}