# 新しい GPG キーを生成する

既存の GPG キーがない場合は、新しい GPG キーを生成してコミットおよびタグの署名に使用できます。

### サポートされているGPGキーのアルゴリズム

GitHub ではいくつかの GPG キー アルゴリズムをサポートしています。 サポートされていないアルゴリズムで生成されたキーを追加しようとすると、エラーが生じることがあります。

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

## GPG キーの生成

> \[!NOTE]
> 新しい GPG キーを生成する前に、メール アドレスを確認してください。 メール アドレスを確認していない場合、GPG でコミットとタグに署名することはできません。 詳細については、 [AUTOTITLE を](/ja/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 には複数のバージョンがあるため、適切なキー生成コマンドを見つけるには、関連する [*man ページ*](https://en.wikipedia.org/wiki/Man_page)を参照する必要がある場合があります。
   * バージョン 2.1.17 以降の場合は、以下のテキストを貼り付けて GPG キーペアを生成します。

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

   * バージョン 2.1.17 以降を使用していない場合、`gpg --full-generate-key` コマンドは機能しません。 以下のテキストを貼り付けてステップ 6 に進んでください。

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

4. プロンプトで、目的のキーの種類を指定するか、`Enter` を押して既定値をそのまま使用します。

5. プロンプトで、目的のキー サイズを指定するか、`Enter` を押して既定値をそのまま使用します。

6. キーの有効期間を入力します。
   `Enter` を押して、キーが無期限に設定されることを示す既定の選択を指定します。 有効期限が必要な場合を除き、この既定値をそのまま使用することをお勧めします。

7. 選択内容が正しいことを確認します。

8. ユーザ ID 情報を入力します。

   > \[!NOTE]
   > メール アドレスの入力を求められたら、GitHub アカウントの確認済みメール アドレスを入力してください。
   > メール アドレスを非公開のままにするには、GitHub 指定の `no-reply` メール アドレスを使用します。

詳細については、 [メールアドレスを検証する](/ja/account-and-profile/how-tos/email-preferences/verifying-your-email-address) と [コミットメールアドレスを設定する](/ja/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address) を参照してください。

1. 安全なパスフレーズを入力します。

2. 公開キーと秘密キーの両方がある GPG キーを長い形式で一覧表示するには、`gpg --list-secret-keys --keyid-format=long` コマンドを使用します。 コミットやタグに署名するには秘密鍵が必要です。

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

   > \[!NOTE]
   > Linux 上の GPG のインストールの一部では、既存のキーの一覧を表示するため、代わりに `gpg2 --list-keys --keyid-format LONG` を使うことが必要な場合があります。 この場合、`git config --global gpg.program gpg2` を実行して `gpg2` を使用するには、Git を構成する必要もあります。

3. GPGキーのリストから、使いたいGPGキーIDの長い形式をコピーしてください。 この例では、GPG キー ID は `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キーIDを入力してください。 この例では、GPG キー ID は `3AA5C34371567BD2` です。

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

5. `-----BEGIN PGP PUBLIC KEY BLOCK-----` で始まり、`-----END PGP PUBLIC KEY BLOCK-----` で終わる GPG キーをコピーします。

6. [GITHUB アカウントに GPG キーを追加します](/ja/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account)。

## 参考資料

* [既存の GPG キーの確認](/ja/authentication/managing-commit-signature-verification/checking-for-existing-gpg-keys)
* [GitHub アカウントへの GPG キーの追加](/ja/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account)
* [Git へ署名キーを伝える](/ja/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)
* [GPG キーとメールの関連付け](/ja/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key)
* [コミットに署名する](/ja/authentication/managing-commit-signature-verification/signing-commits)
* [タグに署名する](/ja/authentication/managing-commit-signature-verification/signing-tags)