# Создание ключа GPG

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

### Поддерживаемые алгоритмы ключей GPG

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

* RSA
* ElGamal
* DSA
* ECDH
* ECDSA
* EdDSA

## Создание ключа GPG

> \[!NOTE]
> Перед созданием нового ключа GPG убедитесь, что вы проверили свой адрес электронной почты. Если вы не проверили свой адрес электронной почты, вы не сможете подписывать фиксации и теги с помощью групповой политики. Для получения дополнительной информации см. [Подтверждение адреса электронной почты](/ru/account-and-profile/how-tos/email-preferences/verifying-your-email-address).

1. Скачайте и установите [программы командной строки GPG](https://www.gnupg.org/download/) для своей операционной системы. Как правило, рекомендуется устанавливать последнюю версию для вашей операционной системы.

2. Откройте <span class="platform-mac">Терминал</span><span class="platform-linux">Терминал</span><span class="platform-windows">GIT Bash</span>.

3. Создайте пару ключей GPG. Так как версий GPG несколько, может потребоваться обратиться к соответствующей [*странице руководства*](https://en.wikipedia.org/wiki/Man_page), чтобы найти команду создания ключей.
   * Если вы используете версию 2.1.17 или более позднюю, вставьте приведенный ниже текст, чтобы создать пару ключей GPG.

     ```shell copy
     gpg --full-generate-key
     ```

   * В других версиях команда `gpg --full-generate-key` не работает. Вставьте приведенный ниже текст и перейдите к шагу 6.

     ```shell copy
     gpg --default-new-key-algo rsa4096 --gen-key
     ```

4. В командной строке укажите нужный тип ключа или нажмите клавишу `Enter`, чтобы принять значение по умолчанию.

5. В командной строке укажите нужный размер ключа или нажмите клавишу `Enter`, чтобы принять значение по умолчанию.

6. Введите срок действия ключа. Нажмите `Enter`, чтобы принять значение по умолчанию: бессрочный ключ. Если вам не требуется установка даты окончания срока действия, рекомендуется принять значение по умолчанию.

7. Проверьте правильность выбранных параметров.

8. Введите идентификатор пользователя.

   > \[!NOTE]
   > Когда вас попросят ввести ваш адрес электронной почты, обязательно введите подтверждённый адрес электронной почты для вашего аккаунта GitHub.

Чтобы сохранить адрес электронной почты закрытым, используйте адрес электронной почты GitHub `no-reply` .

Дополнительные сведения см. в разделе [Подтверждение адреса электронной почты](/ru/account-and-profile/how-tos/email-preferences/verifying-your-email-address) и [Указание адреса электронной почты для фиксаций](/ru/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address).

1. Введите надежную парольную фразу.

2. Команда `gpg --list-secret-keys --keyid-format=long` позволяет получить длинную форму ключей GPG, для которых у вас есть открытый и закрытый ключ. Закрытый ключ необходим для подписания фиксаций или тегов.

   ```shell copy
   gpg --list-secret-keys --keyid-format=long
   ```

   > \[!NOTE]
   > Для некоторых установок GPG в Linux может потребоваться `gpg2 --list-keys --keyid-format LONG` просмотреть список существующих ключей. В этом случае также нужно будет настроить Git для использования `gpg2`, выполнив `git config --global gpg.program gpg2`.

3. Из списка ключей GPG скопируйте длинную форму идентификатора ключа GPG, который вы хотите использовать. В этом примере идентификатором ключа GPG является `3AA5C34371567BD2`:

   ```shell copy
   $ gpg --list-secret-keys --keyid-format=long
   /Users/hubot/.gnupg/secring.gpg
   ------------------------------------
   sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
   uid                          Hubot <hubot@example.com>
   ssb   4096R/4BB6D45482678BE3 2016-03-10
   ```

4. Вставьте приведенный ниже текст, подставив нужный идентификатор ключа GPG. В этом примере идентификатором ключа GPG является `3AA5C34371567BD2`:

   ```shell copy
   gpg --armor --export 3AA5C34371567BD2
   # Prints the GPG key ID, in ASCII armor format
   ```

5. Скопируйте ключ PGP, начиная с `-----BEGIN PGP PUBLIC KEY BLOCK-----` и заканчивая `-----END PGP PUBLIC KEY BLOCK-----`.

6. [Добавьте ключ GPG в свой аккаунт GitHub](/ru/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account).

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

* [Проверка наличия ключей GPG](/ru/authentication/managing-commit-signature-verification/checking-for-existing-gpg-keys)
* [Добавление ключа GPG в ваш аккаунт GitHub](/ru/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account)
* [Предоставление GIT информации о ключе для подписывания](/ru/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)
* [Связывание адреса электронной почты с ключом GPG](/ru/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key)
* [Подписание фиксаций](/ru/authentication/managing-commit-signature-verification/signing-commits)
* [Подписывание тегов](/ru/authentication/managing-commit-signature-verification/signing-tags)