Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы, возможно, еще выполняется. Актуальные сведения см. в документации на английском языке.

Сведения о проверке подписи фиксации

С помощью GPG, SSH или S/MIME вы можете подписывать теги и фиксации локально. Эти теги или фиксации помечаются как проверенные в GitHub, чтобы другие пользователи могли быть уверены, что изменения поступают из надежного источника.

Сведения о проверке подписи фиксации

Вы можете локально подписывать фиксации и теги, чтобы обеспечить для других пользователей уверенность в происхождении внесенных изменений. Если фиксация или тег имеют подпись GPG, SSH, или S/MIME, которая проверяется криптографически,GitHub оставляет для фиксации или тега метку "Проверено" или "Частично проверено".

Проверенная фиксация

Для большинства отдельных пользователей для подписывания фиксаций лучше всего подходят GPG или SSH. Подписи S/MIME обычно требуются в контексте более крупной организации. Подписи SSH создавать проще всего. Вы даже можете отправить существующий ключ проверки подлинности в GitHub для использования также в качестве ключа подписывания. Создание ключа подписывания GPG сложнее создания ключа SSH, но в GPG есть функции, отсутствующие у SSH. Если ключ GPG больше не используется, может истечь срок его действия или он может быть отозван. GitHub показывает фиксации, подписанные таким ключом, как "Проверено", если ключ не помечен как скомпрометированный. У ключей SSH нет такой возможности.

Фиксации и теги имеют следующие состояния проверки в зависимости от того, включен ли режим бдительности. По умолчанию режим бдительности не включен. Сведения о включении режима бдительности см. в статье Отображение состояний проверки для всех фиксаций.

Подписывание фиксаций отличается от утверждения фиксации. Дополнительные сведения об утверждении фиксаций см. в разделе "Управление политикой утверждения фиксаций для репозитория".

Состояния по умолчанию

СостояниеОписание
ПровереноФиксация подписана, а подпись успешно проверена.
НепроверенныеФиксация подписана, но подпись нельзя проверить.
Состояние проверки отсутствуетФиксация не подписана.

Проверка подписи для перемещения из одной ветви в другую и слияния

При использовании варианта Перемещение и слияние для запроса на вытягивание важно помнить, что фиксации в головной ветви добавляются в базовую ветвь без проверки подписи фиксации. При использовании этого варианта GitHub создает измененную фиксацию, используя данные и содержимое исходной фиксации. Это означает, что GitHub не создает новую фиксацию и не может подписать ее как обычный пользователь системы. GitHub не имеет доступа к закрытым ключам для подписывания этой фиксации, поэтому не может подписать фиксацию от имени пользователя.

Чтобы обойти это ограничение, следует переместить изменения из одной ветви в другую и объединить их локально, а затем отправить изменения в базовую ветвь запроса на вытягивание.

Дополнительные сведения см. в разделе Перемещение фиксаций из одной ветви в другую и слияние.

Состояния с включенным режимом бдительности

СостояниеОписание
ПровереноФиксация подписана, подпись успешно проверена, а пользователь, выполнивший фиксацию — единственный автор, который включил строгий режим.
Частично провереноФиксация подписана, и подпись успешно проверена, но у фиксации есть автор, который: a) не является автором фиксации, и б) включил строгий режим. В этом случае подписывание фиксации не гарантирует согласие автора, поэтому фиксация проверяется только частично.
НепроверенныеЛюбое из следующих утверждений верно:
— фиксация подписана, но подпись невозможно проверить;
— фиксация не подписана, и автор фиксации включил строгий режим;
— фиксация не подписана, и автор включил строгий режим.

Администраторы репозитория могут принудительно применить обязательное подписание фиксации в ветви, чтобы заблокировать все неподписанные и непроверенные фиксации. Дополнительные сведения см. в разделе Сведения о защищенных ветвях.

Вы можете проверить состояние проверки подписанных фиксаций или тегов в GitHub и посмотреть, почему подписи фиксации могут быть не проверены. Дополнительные сведения см. в разделе Проверка состояния проверки подписи для фиксации и тега.

GitHub будет автоматически использовать GPG для подписывания фиксаций, созданных с помощью веб-интерфейса. У фиксаций, подписанных GitHub, будет проверенное состояние. Вы можете проверить подпись локально с помощью открытого ключа, доступного по адресу https://github.com/web-flow.gpg. Полный отпечаток ключа — 5DE3 E050 9C47 EA3C F04A 42D3 4AEE 18F8 3AFD EB23.

При необходимости можно выбрать подписывание фиксаций, созданных в GitHub Codespaces, GitHubс помощью GPG. Дополнительные сведения о включении проверки GPG для codespace см. в статье Управление проверкой GPG для GitHub Codespaces.

Проверка GPG подписи фиксации

Вы можете использовать GPG для подписывания фиксаций с помощью ключа GPG, который вы создаете самостоятельно.

GitHub использует библиотеки OpenPGP для подтверждения криптографической проверки локально подписанных фиксаций и тегов по открытому ключу, добавленного в учетную запись в GitHub.com.

Чтобы подписать фиксации с помощью GPG и проверить эти фиксации в GitHub, выполните следующие действия:

  1. Проверьте наличие существующих ключей GPG.
  2. Создайте новый ключ GPG.
  3. Добавьте ключ GPG в учетную запись GitHub.
  4. Расскажите в Git о ключе для подписывания.
  5. Подпишите фиксации.
  6. Подпишите теги.

Проверка подписи фиксаций SSH

Вы можете использовать SSH для подписывания фиксаций с помощью ключа SSH, который вы создаете самостоятельно. Дополнительные сведения см. в справочной документации по Git для user.Signingkey. Если вы уже используете ключ SSH для проверки подлинности с помощью GitHub, вы также можете отправить этот же ключ еще раз для использования в качестве ключа подписывания. Количество ключей подписывания, которые можно добавить в учетную запись, не ограничено.

GitHub использует ssh_data, библиотеку открытый код Ruby, чтобы убедиться, что ваши локально подписанные фиксации и теги криптографически проверяются с помощью открытого ключа, добавленного в учетную запись в GitHub.com.

Примечание. Проверка подписи SSH доступна в Git 2.34 и более поздних версий. Сведения об обновлении версии Git см. на веб-сайте Git.

Чтобы подписать фиксации с помощью SSH и проверить эти фиксации в GitHub, выполните следующие действия:

  1. Проверьте существующие ключи SSH
  2. Создайте новый ключ SSH.
  3. Добавление ключа подписывания SSH в учетную запись GitHub
  4. Расскажите в Git о ключе для подписывания.
  5. Подпишите фиксации.
  6. Подпишите теги.

Проверка S/MIME подписи фиксации

Вы можете использовать S/MIME для подписывания фиксаций с помощью ключа X.509, выданного вашей организацией.

GitHub применяет пакет сертификатов ЦС Debian, то же хранилище доверия, которое используют браузеры Mozilla, чтобы убедиться, что ваши локально подписанные фиксации и теги проверяются криптографически с помощью открытого ключа в доверенном корневом сертификате.

Примечание. Проверка подписи S/MIME доступна в Git 2.19 и более поздних версий. Сведения об обновлении версии Git см. на веб-сайте Git.

Чтобы подписать фиксации с помощью S/MIME и проверить эти фиксации в GitHub, выполните следующие действия:

  1. Расскажите в Git о ключе для подписывания.
  2. Подпишите фиксации.
  3. Подпишите теги.

Вам не нужно отправлять открытый ключ в GitHub.

Проверка подписи для ботов

Организации и GitHub Apps, для которых необходима подпись фиксации, могут для этого использовать боты. Если фиксация или тег имеют подпись бота, которая проверяется криптографически, GitHub отмечает фиксацию или тег как проверенные.

Проверка подписи для ботов будет работать только в том случае, если запрос проверяется и проходит проверку подлинности как GitHub App или бот и не содержит пользовательских сведений об авторе, о пользователе, выполняющем фиксации, и о подписях, например API фиксаций.

Дополнительные материалы