{"meta":{"title":"Предоставление GIT информации о ключе для подписывания","intro":"Чтобы подписать фиксации локально, необходимо сообщить Git, что есть ключ GPG, SSH или X.509, который вы хотите использовать.","product":"Проверка подлинности","breadcrumbs":[{"href":"/ru/authentication","title":"Проверка подлинности"},{"href":"/ru/authentication/managing-commit-signature-verification","title":"Проверка подписей фиксации"},{"href":"/ru/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key","title":"Расскажите в Git о ключе для подписывания."}],"documentType":"article"},"body":"# Предоставление GIT информации о ключе для подписывания\n\nЧтобы подписать фиксации локально, необходимо сообщить Git, что есть ключ GPG, SSH или X.509, который вы хотите использовать.\n\n## Предоставление GIT информации о ключе GPG\n\n<div class=\"ghd-tool mac\">\n\nЕсли вы используете ключ GPG, соответствующий удостоверению фиксации и проверенного адреса электронной почты, связанного с вашей учетной записью на GitHub.com, вы можете начать фиксации подписей и теги подписи.\n\n> \\[!NOTE]\n> Если у вас нет ключа GPG, соответствующего вашему удостоверению автора фиксаций, необходимо связать адрес электронной почты с существующим ключом. Дополнительные сведения см. в разделе [Связывание адреса электронной почты с ключом GPG](/ru/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key).\n\nЕсли у вас несколько ключей GPG, необходимо указать GIT, какой из них следует использовать.\n\n1. Откройте <span class=\"platform-mac\">Терминал</span><span class=\"platform-linux\">Терминал</span><span class=\"platform-windows\">GIT Bash</span>.\n\n2. Если вы ранее настроили Git для использования другого формата ключа при подписании `--gpg-sign`с помощью этой конфигурации, не укажите этот формат, чтобы будет использоваться формат `openpgp` по умолчанию.\n\n   ```shell\n   git config --global --unset gpg.format\n   ```\n\n3. Команда `gpg --list-secret-keys --keyid-format=long` позволяет получить длинную форму ключей GPG, для которых у вас есть открытый и закрытый ключ. Закрытый ключ необходим для подписания фиксаций или тегов.\n\n   ```shell copy\n   gpg --list-secret-keys --keyid-format=long\n   ```\n\n   > \\[!NOTE]\n   > Для некоторых установок GPG в Linux может потребоваться `gpg2 --list-keys --keyid-format LONG` просмотреть список существующих ключей. В этом случае также нужно будет настроить Git для использования `gpg2`, выполнив `git config --global gpg.program gpg2`.\n\n4. Из списка ключей GPG скопируйте длинную форму идентификатора ключа GPG, который вы хотите использовать. В этом примере идентификатором ключа GPG является `3AA5C34371567BD2`:\n\n   ```shell copy\n   $ gpg --list-secret-keys --keyid-format=long\n   /Users/hubot/.gnupg/secring.gpg\n   ------------------------------------\n   sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]\n   uid                          Hubot <hubot@example.com>\n   ssb   4096R/4BB6D45482678BE3 2016-03-10\n   ```\n\n5. Чтобы задать первичный ключ подписи GPG в Git, вставьте приведенный ниже текст, подставив идентификатор первичного ключа GPG, который вы хотите использовать. В этом примере идентификатором ключа GPG является `3AA5C34371567BD2`:\n\n   ```shell\n   git config --global user.signingkey 3AA5C34371567BD2\n   ```\n\n   Кроме того, может потребоваться использовать вложенный ключ. В этом примере идентификатором подраздела GPG является `4BB6D45482678BE3`:\n\n   ```shell\n   git config --global user.signingkey 4BB6D45482678BE3\n   ```\n\n   Если вы используете несколько ключей и вложенных ключей, следует добавить восклицательный знак `!` к ключу, чтобы сообщить git, что это ваш предпочтительный ключ. Иногда может потребоваться экранировать восклицательный знак с косой чертой: `\\!`\n\n6. При необходимости, чтобы настроить Git для подписывания всех фиксаций и тегов по умолчанию, введите следующую команду:\n\n   ```shell\n   git config --global commit.gpgsign true\n   git config --global tag.gpgSign true\n   ```\n\n   Дополнительные сведения см. в разделе [Подписание фиксаций](/ru/authentication/managing-commit-signature-verification/signing-commits).\n\n7. Если вы не используете набор GPG, выполните следующую команду в оболочке `zsh`, чтобы добавить ключ GPG в файл `.zshrc`, если он существует, или в файл `.zprofile`:\n\n   ```shell\n   $ if [ -r ~/.zshrc ]; then echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.zshrc; \\\n     else echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.zprofile; fi\n   ```\n\n   Если вы используете оболочку `bash`, выполните следующую команду:\n\n   ```shell\n   $ if [ -r ~/.bash_profile ]; then echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.bash_profile; \\\n     else echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.profile; fi\n   ```\n\n8. Если необходимо запрашивать ПИН-код или парольную фразу, установите `pinentry-mac`. Например, при использовании [Homebrew](https://brew.sh/):\n\n   ```shell\n   brew install pinentry-mac\n   echo \"pinentry-program $(which pinentry-mac)\" >> ~/.gnupg/gpg-agent.conf\n   killall gpg-agent\n   ```\n\n</div>\n\n<div class=\"ghd-tool windows\">\n\nЕсли вы используете ключ GPG, соответствующий удостоверению фиксации и проверенного адреса электронной почты, связанного с вашей учетной записью на GitHub.com, вы можете начать фиксации подписей и теги подписи.\n\n> \\[!NOTE]\n> Если у вас нет ключа GPG, соответствующего вашему удостоверению автора фиксаций, необходимо связать адрес электронной почты с существующим ключом. Дополнительные сведения см. в разделе [Связывание адреса электронной почты с ключом GPG](/ru/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key).\n\nЕсли у вас несколько ключей GPG, необходимо указать GIT, какой из них следует использовать.\n\n1. Откройте <span class=\"platform-mac\">Терминал</span><span class=\"platform-linux\">Терминал</span><span class=\"platform-windows\">GIT Bash</span>.\n2. Если вы ранее настроили Git для использования другого формата ключа при подписании `--gpg-sign`с помощью этой конфигурации, не укажите этот формат, чтобы будет использоваться формат `openpgp` по умолчанию.\n\n   ```shell\n   git config --global --unset gpg.format\n   ```\n3. Команда `gpg --list-secret-keys --keyid-format=long` позволяет получить длинную форму ключей GPG, для которых у вас есть открытый и закрытый ключ. Закрытый ключ необходим для подписания фиксаций или тегов.\n\n   ```shell copy\n   gpg --list-secret-keys --keyid-format=long\n   ```\n\n   > \\[!NOTE]\n   > Для некоторых установок GPG в Linux может потребоваться `gpg2 --list-keys --keyid-format LONG` просмотреть список существующих ключей. В этом случае также нужно будет настроить Git для использования `gpg2`, выполнив `git config --global gpg.program gpg2`.\n4. Из списка ключей GPG скопируйте длинную форму идентификатора ключа GPG, который вы хотите использовать. В этом примере идентификатором ключа GPG является `3AA5C34371567BD2`:\n\n   ```shell copy\n   $ gpg --list-secret-keys --keyid-format=long\n   /Users/hubot/.gnupg/secring.gpg\n   ------------------------------------\n   sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]\n   uid                          Hubot <hubot@example.com>\n   ssb   4096R/4BB6D45482678BE3 2016-03-10\n   ```\n5. Чтобы задать первичный ключ подписи GPG в Git, вставьте приведенный ниже текст, подставив идентификатор первичного ключа GPG, который вы хотите использовать. В этом примере идентификатором ключа GPG является `3AA5C34371567BD2`:\n\n   ```shell\n   git config --global user.signingkey 3AA5C34371567BD2\n   ```\n\n   Кроме того, может потребоваться использовать вложенный ключ. В этом примере идентификатором подраздела GPG является `4BB6D45482678BE3`:\n\n   ```shell\n   git config --global user.signingkey 4BB6D45482678BE3\n   ```\n\n   Если вы используете несколько ключей и вложенных ключей, следует добавить восклицательный знак `!` к ключу, чтобы сообщить git, что это ваш предпочтительный ключ. Иногда может потребоваться экранировать восклицательный знак с косой чертой: `\\!`\n6. При необходимости, чтобы настроить Git для подписывания всех фиксаций и тегов по умолчанию, введите следующую команду:\n\n   ```shell\n   git config --global commit.gpgsign true\n   git config --global tag.gpgSign true\n   ```\n\n   Дополнительные сведения см. в разделе [Подписание фиксаций](/ru/authentication/managing-commit-signature-verification/signing-commits).\n\n</div>\n\n<div class=\"ghd-tool linux\">\n\nЕсли вы используете ключ GPG, соответствующий удостоверению фиксации и проверенного адреса электронной почты, связанного с вашей учетной записью на GitHub.com, вы можете начать фиксации подписей и теги подписи.\n\n> \\[!NOTE]\n> Если у вас нет ключа GPG, соответствующего вашему удостоверению автора фиксаций, необходимо связать адрес электронной почты с существующим ключом. Дополнительные сведения см. в разделе [Связывание адреса электронной почты с ключом GPG](/ru/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key).\n\nЕсли у вас несколько ключей GPG, необходимо указать GIT, какой из них следует использовать.\n\n1. Откройте <span class=\"platform-mac\">Терминал</span><span class=\"platform-linux\">Терминал</span><span class=\"platform-windows\">GIT Bash</span>.\n2. Если вы ранее настроили Git для использования другого формата ключа при подписании `--gpg-sign`с помощью этой конфигурации, не укажите этот формат, чтобы будет использоваться формат `openpgp` по умолчанию.\n\n   ```shell\n   git config --global --unset gpg.format\n   ```\n3. Команда `gpg --list-secret-keys --keyid-format=long` позволяет получить длинную форму ключей GPG, для которых у вас есть открытый и закрытый ключ. Закрытый ключ необходим для подписания фиксаций или тегов.\n\n   ```shell copy\n   gpg --list-secret-keys --keyid-format=long\n   ```\n\n   > \\[!NOTE]\n   > Для некоторых установок GPG в Linux может потребоваться `gpg2 --list-keys --keyid-format LONG` просмотреть список существующих ключей. В этом случае также нужно будет настроить Git для использования `gpg2`, выполнив `git config --global gpg.program gpg2`.\n4. Из списка ключей GPG скопируйте длинную форму идентификатора ключа GPG, который вы хотите использовать. В этом примере идентификатором ключа GPG является `3AA5C34371567BD2`:\n\n   ```shell copy\n   $ gpg --list-secret-keys --keyid-format=long\n   /Users/hubot/.gnupg/secring.gpg\n   ------------------------------------\n   sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]\n   uid                          Hubot <hubot@example.com>\n   ssb   4096R/4BB6D45482678BE3 2016-03-10\n   ```\n5. Чтобы задать первичный ключ подписи GPG в Git, вставьте приведенный ниже текст, подставив идентификатор первичного ключа GPG, который вы хотите использовать. В этом примере идентификатором ключа GPG является `3AA5C34371567BD2`:\n\n   ```shell\n   git config --global user.signingkey 3AA5C34371567BD2\n   ```\n\n   Кроме того, может потребоваться использовать вложенный ключ. В этом примере идентификатором подраздела GPG является `4BB6D45482678BE3`:\n\n   ```shell\n   git config --global user.signingkey 4BB6D45482678BE3\n   ```\n\n   Если вы используете несколько ключей и вложенных ключей, следует добавить восклицательный знак `!` к ключу, чтобы сообщить git, что это ваш предпочтительный ключ. Иногда может потребоваться экранировать восклицательный знак с косой чертой: `\\!`\n6. При необходимости, чтобы настроить Git для подписывания всех фиксаций и тегов по умолчанию, введите следующую команду:\n\n   ```shell\n   git config --global commit.gpgsign true\n   git config --global tag.gpgSign true\n   ```\n\n   Дополнительные сведения см. в разделе [Подписание фиксаций](/ru/authentication/managing-commit-signature-verification/signing-commits).\n7. Чтобы добавить ключ GPG в файл запуска `.bashrc`, выполните следующую команду:\n\n   ```bash\n   [ -f ~/.bashrc ] && echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.bashrc\n   ```\n\n</div>\n\n## Предоставление Git информации о ключе SSH\n\nСуществующий ключ SSH можно использовать для подписывания фиксаций и тегов или создания нового ключа специально для подписывания. Дополнительные сведения см. в разделе [Создание нового ключа SSH и его добавление в ssh-agent](/ru/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).\n\n> \\[!NOTE]\n> Проверка подписи SSH доступна в Git 2.34 или более поздней версии. Сведения об обновлении версии Git см. на веб-сайте [Git](https://git-scm.com/downloads).\n\n1. Откройте <span class=\"platform-mac\">Терминал</span><span class=\"platform-linux\">Терминал</span><span class=\"platform-windows\">GIT Bash</span>.\n2. Настройте Git, чтобы использовать SSH для подписывания фиксаций и тегов:\n\n   ```bash\n   git config --global gpg.format ssh\n   ```\n3. Чтобы задать ключ подписи SSH в Git, вставьте приведенный ниже текст, заменив **/PATH/TO/. SSH/KEY. PUB** с путем к открытому ключу, который вы хотите использовать.\n\n   ```bash\n   git config --global user.signingkey /PATH/TO/.SSH/KEY.PUB\n   ```\n\n<div class=\"ghd-tool windows\">\n\n## Предоставление Git информации о вашем ключе X.509\n\nВы можете использовать [smimesign](https://github.com/github/smimesign) для подписывания фиксаций и тегов с помощью S/MIME.\n\n> \\[!NOTE]\n> Проверка подписи S/MIME доступна в Git 2.19 или более поздней версии. Сведения об обновлении версии Git см. на веб-сайте [Git](https://git-scm.com/downloads).\n\n1. Установите [smimesign](https://github.com/github/smimesign#installation).\n\n2. Откройте <span class=\"platform-mac\">Терминал</span><span class=\"platform-linux\">Терминал</span><span class=\"platform-windows\">GIT Bash</span>.\n\n3. Настройте Git, чтобы использовать S/MIME для подписывания фиксаций и тегов. В Git 2.19 или более поздней версии используйте команды `git config gpg.x509.program` и `git config gpg.format`:\n   * Чтобы использовать S/MIME для подписывания во всех репозиториях, воспользуйтесь следующим кодом:\n\n     ```shell\n     git config --global gpg.x509.program smimesign\n     git config --global gpg.format x509\n     ```\n\n   * Чтобы использовать S/MIME для подписывания в одном репозитории, воспользуйтесь следующим кодом:\n\n     ```shell\n     cd PATH-TO-REPOSITORY\n     git config --local gpg.x509.program smimesign\n     git config --local gpg.format x509\n     ```\n\n     В Git 2.18 или более ранней версии используйте команду `git config gpg.program`:\n\n   * Чтобы использовать S/MIME для подписывания во всех репозиториях, воспользуйтесь следующим кодом:\n\n     ```shell\n     git config --global gpg.program smimesign\n     ```\n\n   * Чтобы использовать S/MIME для подписывания в одном репозитории, воспользуйтесь следующим кодом:\n\n     ```shell\n     cd  PATH-TO-REPOSITORY\n     git config --local gpg.program smimesign\n     ```\n\n     Если вы используете ключ X.509, соответствующий вашему удостоверению вносителя фиксаций, можно начать подписывание фиксаций и тегов.\n\n4. Если вы не используете ключ X.509, соответствующий вашему удостоверению вносителя фиксаций, выведите список ключей X.509, для которых у вас есть сертификат и закрытый ключ, с помощью команды `smimesign --list-keys`.\n\n   ```shell\n   smimesign --list-keys\n   ```\n\n5. В списке ключей X.509 скопируйте идентификатор сертификата ключа X.509, который вы хотите использовать. В этом примере идентификатором сертификата является `0ff455a2708394633e4bb2f88002e3cd80cbd76f`:\n\n   ```shell\n   $ smimesign --list-keys\n                ID: 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n               S/N: a2dfa7e8c9c4d1616f1009c988bb70f\n         Algorithm: SHA256-RSA\n          Validity: 2017-11-22 00:00:00 +0000 UTC - 2020-11-22 12:00:00 +0000 UTC\n            Issuer: CN=DigiCert SHA2 Assured ID CA,OU=www.digicert.com,O=DigiCert Inc,C=US\n           Subject: CN=Octocat,O=GitHub\\, Inc.,L=San Francisco,ST=California,C=US\n            Emails: octocat@github.com\n   ```\n\n6. Чтобы задать ключ подписывания X.509 в Git, вставьте приведенный ниже текст, подставив скопированный ранее идентификатор сертификата.\n   * Чтобы использовать ключ X.509 для подписывания во всех репозиториях, воспользуйтесь следующим кодом:\n\n     ```shell\n     git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n   * Чтобы использовать ключ X.509 для подписывания в одном репозитории, воспользуйтесь следующим кодом:\n\n     ```shell\n     cd  PATH-TO-REPOSITORY\n     git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n</div>\n\n<div class=\"ghd-tool mac\">\n\n## Предоставление Git информации о вашем ключе X.509\n\nВы можете использовать [smimesign](https://github.com/github/smimesign) для подписывания фиксаций и тегов с помощью S/MIME.\n\n> \\[!NOTE]\n> Проверка подписи S/MIME доступна в Git 2.19 или более поздней версии. Сведения об обновлении версии Git см. на веб-сайте [Git](https://git-scm.com/downloads).\n\n1. Установите [smimesign](https://github.com/github/smimesign#installation).\n\n2. Откройте <span class=\"platform-mac\">Терминал</span><span class=\"platform-linux\">Терминал</span><span class=\"platform-windows\">GIT Bash</span>.\n\n3. Настройте Git, чтобы использовать S/MIME для подписывания фиксаций и тегов. В Git 2.19 или более поздней версии используйте команды `git config gpg.x509.program` и `git config gpg.format`:\n   * Чтобы использовать S/MIME для подписывания во всех репозиториях, воспользуйтесь следующим кодом:\n\n     ```shell\n     git config --global gpg.x509.program smimesign\n     git config --global gpg.format x509\n     ```\n\n   * Чтобы использовать S/MIME для подписывания в одном репозитории, воспользуйтесь следующим кодом:\n\n     ```shell\n     cd PATH-TO-REPOSITORY\n     git config --local gpg.x509.program smimesign\n     git config --local gpg.format x509\n     ```\n\n     В Git 2.18 или более ранней версии используйте команду `git config gpg.program`:\n\n   * Чтобы использовать S/MIME для подписывания во всех репозиториях, воспользуйтесь следующим кодом:\n\n     ```shell\n     git config --global gpg.program smimesign\n     ```\n\n   * Чтобы использовать S/MIME для подписывания в одном репозитории, воспользуйтесь следующим кодом:\n\n     ```shell\n     cd  PATH-TO-REPOSITORY\n     git config --local gpg.program smimesign\n     ```\n\n     Если вы используете ключ X.509, соответствующий вашему удостоверению вносителя фиксаций, можно начать подписывание фиксаций и тегов.\n\n4. Если вы не используете ключ X.509, соответствующий вашему удостоверению вносителя фиксаций, выведите список ключей X.509, для которых у вас есть сертификат и закрытый ключ, с помощью команды `smimesign --list-keys`.\n\n   ```shell\n   smimesign --list-keys\n   ```\n\n5. В списке ключей X.509 скопируйте идентификатор сертификата ключа X.509, который вы хотите использовать. В этом примере идентификатором сертификата является `0ff455a2708394633e4bb2f88002e3cd80cbd76f`:\n\n   ```shell\n   $ smimesign --list-keys\n                ID: 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n               S/N: a2dfa7e8c9c4d1616f1009c988bb70f\n         Algorithm: SHA256-RSA\n          Validity: 2017-11-22 00:00:00 +0000 UTC - 2020-11-22 12:00:00 +0000 UTC\n            Issuer: CN=DigiCert SHA2 Assured ID CA,OU=www.digicert.com,O=DigiCert Inc,C=US\n           Subject: CN=Octocat,O=GitHub\\, Inc.,L=San Francisco,ST=California,C=US\n            Emails: octocat@github.com\n   ```\n\n6. Чтобы задать ключ подписывания X.509 в Git, вставьте приведенный ниже текст, подставив скопированный ранее идентификатор сертификата.\n   * Чтобы использовать ключ X.509 для подписывания во всех репозиториях, воспользуйтесь следующим кодом:\n\n     ```shell\n     git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n   * Чтобы использовать ключ X.509 для подписывания в одном репозитории, воспользуйтесь следующим кодом:\n\n     ```shell\n     cd  PATH-TO-REPOSITORY\n     git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n</div>\n\n## Дополнительные материалы\n\n* [Добавление нового SSH-ключа в ваш аккаунт GitHub](/ru/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account).\n* [Подписание фиксаций](/ru/authentication/managing-commit-signature-verification/signing-commits)\n* [Подписывание тегов](/ru/authentication/managing-commit-signature-verification/signing-tags)"}