{"meta":{"title":"Git へ署名キーを伝える","intro":"ローカルでコミットに署名する場合は、使用したい GPG、SSH、または X.509 キーがあることを Git に知らせる必要があります。","product":"認証","breadcrumbs":[{"href":"/ja/authentication","title":"認証"},{"href":"/ja/authentication/managing-commit-signature-verification","title":"コミット署名を確認する"},{"href":"/ja/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key","title":"Git へ署名キーを伝える"}],"documentType":"article"},"body":"# Git へ署名キーを伝える\n\nローカルでコミットに署名する場合は、使用したい GPG、SSH、または X.509 キーがあることを Git に知らせる必要があります。\n\n## Git へ GPG キーを伝える\n\n<div class=\"ghd-tool mac\">\n\nコミッター ID と一致する GPG キーと、GitHub.com でのアカウントに関連付けられた確認済みのメール アドレスを使用している場合は、コミットの署名とタグの署名を開始できます。\n\n> \\[!NOTE]\n> コミッターアイデンティティにマッチする GPG キーを持っていない場合、既存のキーとメールアドレスを関連付ける必要があります。 詳しくは、「[GPG キーとメールの関連付け](/ja/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. `--gpg-sign` で署名するときに別のキー形式を使うように以前、git を構成している場合、`openpgp` の既定形式が使用されるよう、この構成を解除してください。\n\n   ```shell\n   git config --global --unset gpg.format\n   ```\n\n3. 公開キーと秘密キーの両方がある GPG キーを長い形式で一覧表示するには、`gpg --list-secret-keys --keyid-format=long` コマンドを使用します。 コミットやタグに署名するには秘密鍵が必要です。\n\n   ```shell copy\n   gpg --list-secret-keys --keyid-format=long\n   ```\n\n   > \\[!NOTE]\n   > Linux 上の GPG のインストールの一部では、既存のキーの一覧を表示するため、代わりに `gpg2 --list-keys --keyid-format LONG` を使うことが必要な場合があります。 この場合、`git config --global gpg.program gpg2` を実行して `gpg2` を使用するには、Git を構成する必要もあります。\n\n4. GPGキーのリストから、使いたいGPGキーIDの長い形式をコピーしてください。 この例では、GPG キー ID は `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. Git でプライマリ GPG 署名キーを設定するには、以下のテキストを貼り付けて、使いたいプライマリ GPG キー ID に置き換えます。 この例では、GPG キー ID は `3AA5C34371567BD2` です。\n\n   ```shell\n   git config --global user.signingkey 3AA5C34371567BD2\n   ```\n\n   一方、サブキーを使用したい場合もあります。 この例の GPG サブキー ID は `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   詳しくは、「[コミットに署名する](/ja/authentication/managing-commit-signature-verification/signing-commits)」をご覧ください。\n\n7. GPG スイートを使用していない場合は、`zsh` シェルで次のコマンドを実行して、存在する場合は `.zshrc` ファイル、または `.zprofile` ファイルに GPG キーを追加します。\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. 必要に応じて、PIN またはパスフレーズの入力を求めるメッセージを表示するには、`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コミッター ID と一致する GPG キーと、GitHub.com でのアカウントに関連付けられた確認済みのメール アドレスを使用している場合は、コミットの署名とタグの署名を開始できます。\n\n> \\[!NOTE]\n> コミッターアイデンティティにマッチする GPG キーを持っていない場合、既存のキーとメールアドレスを関連付ける必要があります。 詳しくは、「[GPG キーとメールの関連付け](/ja/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. `--gpg-sign` で署名するときに別のキー形式を使うように以前、git を構成している場合、`openpgp` の既定形式が使用されるよう、この構成を解除してください。\n\n   ```shell\n   git config --global --unset gpg.format\n   ```\n3. 公開キーと秘密キーの両方がある GPG キーを長い形式で一覧表示するには、`gpg --list-secret-keys --keyid-format=long` コマンドを使用します。 コミットやタグに署名するには秘密鍵が必要です。\n\n   ```shell copy\n   gpg --list-secret-keys --keyid-format=long\n   ```\n\n   > \\[!NOTE]\n   > Linux 上の GPG のインストールの一部では、既存のキーの一覧を表示するため、代わりに `gpg2 --list-keys --keyid-format LONG` を使うことが必要な場合があります。 この場合、`git config --global gpg.program gpg2` を実行して `gpg2` を使用するには、Git を構成する必要もあります。\n4. GPGキーのリストから、使いたいGPGキーIDの長い形式をコピーしてください。 この例では、GPG キー ID は `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. Git でプライマリ GPG 署名キーを設定するには、以下のテキストを貼り付けて、使いたいプライマリ GPG キー ID に置き換えます。 この例では、GPG キー ID は `3AA5C34371567BD2` です。\n\n   ```shell\n   git config --global user.signingkey 3AA5C34371567BD2\n   ```\n\n   一方、サブキーを使用したい場合もあります。 この例の GPG サブキー ID は `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   詳しくは、「[コミットに署名する](/ja/authentication/managing-commit-signature-verification/signing-commits)」をご覧ください。\n\n</div>\n\n<div class=\"ghd-tool linux\">\n\nコミッター ID と一致する GPG キーと、GitHub.com でのアカウントに関連付けられた確認済みのメール アドレスを使用している場合は、コミットの署名とタグの署名を開始できます。\n\n> \\[!NOTE]\n> コミッターアイデンティティにマッチする GPG キーを持っていない場合、既存のキーとメールアドレスを関連付ける必要があります。 詳しくは、「[GPG キーとメールの関連付け](/ja/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. `--gpg-sign` で署名するときに別のキー形式を使うように以前、git を構成している場合、`openpgp` の既定形式が使用されるよう、この構成を解除してください。\n\n   ```shell\n   git config --global --unset gpg.format\n   ```\n3. 公開キーと秘密キーの両方がある GPG キーを長い形式で一覧表示するには、`gpg --list-secret-keys --keyid-format=long` コマンドを使用します。 コミットやタグに署名するには秘密鍵が必要です。\n\n   ```shell copy\n   gpg --list-secret-keys --keyid-format=long\n   ```\n\n   > \\[!NOTE]\n   > Linux 上の GPG のインストールの一部では、既存のキーの一覧を表示するため、代わりに `gpg2 --list-keys --keyid-format LONG` を使うことが必要な場合があります。 この場合、`git config --global gpg.program gpg2` を実行して `gpg2` を使用するには、Git を構成する必要もあります。\n4. GPGキーのリストから、使いたいGPGキーIDの長い形式をコピーしてください。 この例では、GPG キー ID は `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. Git でプライマリ GPG 署名キーを設定するには、以下のテキストを貼り付けて、使いたいプライマリ GPG キー ID に置き換えます。 この例では、GPG キー ID は `3AA5C34371567BD2` です。\n\n   ```shell\n   git config --global user.signingkey 3AA5C34371567BD2\n   ```\n\n   一方、サブキーを使用したい場合もあります。 この例の GPG サブキー ID は `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   詳しくは、「[コミットに署名する](/ja/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 に追加する](/ja/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) の Web サイトを参照してください。\n\n1. <span class=\"platform-mac\">\\[ターミナル]</span><span class=\"platform-linux\">\\[ターミナル]</span><span class=\"platform-windows\">\\[Git Bash]</span> を開きます。\n2. コミットやタグの署名に SSH を使うよう Git を構成します。\n\n   ```bash\n   git config --global gpg.format ssh\n   ```\n3. Git に SSH 署名キーを設定するには、次のテキストを貼り付けて、**/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\nS/MIME を使ってコミットをタグに署名するには、[smimesign](https://github.com/github/smimesign) を使います。\n\n> \\[!NOTE]\n> S/MIME 署名の検証は、Git 2.19 以降で利用できます。 git の最新バージョンを入手するには、[Git](https://git-scm.com/downloads) の Web サイトを参照してください。\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. コミットやタグの署名にS/MIMEを使うようGitを設定してください。 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   * 1つのリポジトリへの署名に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   * 1つのリポジトリへの署名に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 キーを使っていない場合は、`smimesign --list-keys` コマンドを使って証明書と秘密鍵の両方を持っている X.509 キーのリストを表示します。\n\n   ```shell\n   smimesign --list-keys\n   ```\n\n5. X.509キーのリストから、使いたいX.509キーの証明書IDをコピーしてください。 この例では、証明書 ID は `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に設定するには、証明書IDをさきほどコピーしたものに置き換えて以下のテキストを貼り付けてください。\n   * すべてのリポジトリへの署名にX.509キーを使うには以下のようにします。\n\n     ```shell\n     git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n   * 1つのリポジトリへの署名に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\nS/MIME を使ってコミットをタグに署名するには、[smimesign](https://github.com/github/smimesign) を使います。\n\n> \\[!NOTE]\n> S/MIME 署名の検証は、Git 2.19 以降で利用できます。 git の最新バージョンを入手するには、[Git](https://git-scm.com/downloads) の Web サイトを参照してください。\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. コミットやタグの署名にS/MIMEを使うようGitを設定してください。 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   * 1つのリポジトリへの署名に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   * 1つのリポジトリへの署名に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 キーを使っていない場合は、`smimesign --list-keys` コマンドを使って証明書と秘密鍵の両方を持っている X.509 キーのリストを表示します。\n\n   ```shell\n   smimesign --list-keys\n   ```\n\n5. X.509キーのリストから、使いたいX.509キーの証明書IDをコピーしてください。 この例では、証明書 ID は `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に設定するには、証明書IDをさきほどコピーしたものに置き換えて以下のテキストを貼り付けてください。\n   * すべてのリポジトリへの署名にX.509キーを使うには以下のようにします。\n\n     ```shell\n     git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n   * 1つのリポジトリへの署名に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* 「[GitHub アカウントへの新しい SSH キーの追加](/ja/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)」。\n* [コミットに署名する](/ja/authentication/managing-commit-signature-verification/signing-commits)\n* [タグに署名する](/ja/authentication/managing-commit-signature-verification/signing-tags)"}