Git へ GPG キーを伝える
コミッター ID と一致する GPG キーと、お使いの GitHub Enterprise Server インスタンス でのアカウントに関連付けられた確認済みのメール アドレスを使用している場合は、コミットの署名とタグの署名を開始できます。
コミッターアイデンティティにマッチする GPG キーを持っていない場合、既存のキーとメールアドレスを関連付ける必要があります。 詳しくは、「GPG キーとメールの関連付け」をご覧ください。
複数の GPG キーを持っている場合、どれを使うかを Git に伝える必要があります。
-
[ターミナル][ターミナル][Git Bash] を開きます。
-
--gpg-sign
で署名するときに別のキー形式を使うように以前、git を構成している場合、openpgp
の既定形式が使用されるよう、この構成を解除してください。git config --global --unset gpg.format
-
公開キーと秘密キーの両方がある GPG キーを長い形式で一覧表示するには、
gpg --list-secret-keys --keyid-format=long
コマンドを使用します。 コミットやタグに署名するには秘密鍵が必要です。Shell gpg --list-secret-keys --keyid-format=long
gpg --list-secret-keys --keyid-format=long
注: Linux での一部の GPG インストールには、代わりに既存のキーの一覧を表示するには、
gpg2 --list-keys --keyid-format LONG
の使用が必要となる場合があります。 この場合、git config --global gpg.program gpg2
を実行してgpg2
を使用するには、Git を構成する必要もあります。 -
GPGキーのリストから、使いたいGPGキーIDの長い形式をコピーしてください。 この例では、GPG キー ID は
3AA5C34371567BD2
です。Shell $ 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
$ 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
-
Git でプライマリ GPG 署名キーを設定するには、以下のテキストを貼り付けて、使いたいプライマリ GPG キー ID に置き換えます。 この例では、GPG キー ID は
3AA5C34371567BD2
です。git config --global user.signingkey 3AA5C34371567BD2
一方、サブキーを使用したい場合もあります。 この例の GPG サブキー ID は
4BB6D45482678BE3
です。git config --global user.signingkey 4BB6D45482678BE3
複数のキーとサブキーを使用する場合は、キーに感嘆符
!
を追加して、これが優先キーであることを git に伝える必要があります。 場合によっては、バック スラッシュで感嘆符をエスケープする必要があります (\!
)。 -
必要に応じて、既定ですべてのコミットに署名するように Git を構成するには、次のコマンドを入力します。
git config --global commit.gpgsign true
詳しくは、「コミットに署名する」を参照してください。
-
GPG スイートを使用していない場合は、
zsh
シェルで次のコマンドを実行して、存在する場合は.zshrc
ファイル、または.zprofile
ファイルに GPG キーを追加します。$ if [ -r ~/.zshrc ]; then echo -e '\nexport GPG_TTY=$(tty)' >> ~/.zshrc; \ else echo -e '\nexport GPG_TTY=$(tty)' >> ~/.zprofile; fi
または、
bash
シェルを使用する場合は、次のコマンドを実行します。$ if [ -r ~/.bash_profile ]; then echo -e '\nexport GPG_TTY=$(tty)' >> ~/.bash_profile; \ else echo -e '\nexport GPG_TTY=$(tty)' >> ~/.profile; fi
-
必要に応じて、PIN またはパスフレーズの入力を求めるメッセージを表示するには、
pinentry-mac
をインストールします。 たとえば、Homebrew を使用すると、次のようになります。brew install pinentry-mac echo "pinentry-program $(which pinentry-mac)" >> ~/.gnupg/gpg-agent.conf killall gpg-agent
コミッター ID と一致する GPG キーと、お使いの GitHub Enterprise Server インスタンス でのアカウントに関連付けられた確認済みのメール アドレスを使用している場合は、コミットの署名とタグの署名を開始できます。
コミッターアイデンティティにマッチする GPG キーを持っていない場合、既存のキーとメールアドレスを関連付ける必要があります。 詳しくは、「GPG キーとメールの関連付け」をご覧ください。
複数の GPG キーを持っている場合、どれを使うかを Git に伝える必要があります。
-
[ターミナル][ターミナル][Git Bash] を開きます。
-
--gpg-sign
で署名するときに別のキー形式を使うように以前、git を構成している場合、openpgp
の既定形式が使用されるよう、この構成を解除してください。git config --global --unset gpg.format
-
公開キーと秘密キーの両方がある GPG キーを長い形式で一覧表示するには、
gpg --list-secret-keys --keyid-format=long
コマンドを使用します。 コミットやタグに署名するには秘密鍵が必要です。Shell gpg --list-secret-keys --keyid-format=long
gpg --list-secret-keys --keyid-format=long
注: Linux での一部の GPG インストールには、代わりに既存のキーの一覧を表示するには、
gpg2 --list-keys --keyid-format LONG
の使用が必要となる場合があります。 この場合、git config --global gpg.program gpg2
を実行してgpg2
を使用するには、Git を構成する必要もあります。 -
GPGキーのリストから、使いたいGPGキーIDの長い形式をコピーしてください。 この例では、GPG キー ID は
3AA5C34371567BD2
です。Shell $ 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
$ 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
-
Git でプライマリ GPG 署名キーを設定するには、以下のテキストを貼り付けて、使いたいプライマリ GPG キー ID に置き換えます。 この例では、GPG キー ID は
3AA5C34371567BD2
です。git config --global user.signingkey 3AA5C34371567BD2
一方、サブキーを使用したい場合もあります。 この例の GPG サブキー ID は
4BB6D45482678BE3
です。git config --global user.signingkey 4BB6D45482678BE3
複数のキーとサブキーを使用する場合は、キーに感嘆符
!
を追加して、これが優先キーであることを git に伝える必要があります。 場合によっては、バック スラッシュで感嘆符をエスケープする必要があります (\!
)。 -
必要に応じて、既定ですべてのコミットに署名するように Git を構成するには、次のコマンドを入力します。
git config --global commit.gpgsign true
詳しくは、「コミットに署名する」を参照してください。
コミッター ID と一致する GPG キーと、お使いの GitHub Enterprise Server インスタンス でのアカウントに関連付けられた確認済みのメール アドレスを使用している場合は、コミットの署名とタグの署名を開始できます。
コミッターアイデンティティにマッチする GPG キーを持っていない場合、既存のキーとメールアドレスを関連付ける必要があります。 詳しくは、「GPG キーとメールの関連付け」をご覧ください。
複数の GPG キーを持っている場合、どれを使うかを Git に伝える必要があります。
-
[ターミナル][ターミナル][Git Bash] を開きます。
-
--gpg-sign
で署名するときに別のキー形式を使うように以前、git を構成している場合、openpgp
の既定形式が使用されるよう、この構成を解除してください。git config --global --unset gpg.format
-
公開キーと秘密キーの両方がある GPG キーを長い形式で一覧表示するには、
gpg --list-secret-keys --keyid-format=long
コマンドを使用します。 コミットやタグに署名するには秘密鍵が必要です。Shell gpg --list-secret-keys --keyid-format=long
gpg --list-secret-keys --keyid-format=long
注: Linux での一部の GPG インストールには、代わりに既存のキーの一覧を表示するには、
gpg2 --list-keys --keyid-format LONG
の使用が必要となる場合があります。 この場合、git config --global gpg.program gpg2
を実行してgpg2
を使用するには、Git を構成する必要もあります。 -
GPGキーのリストから、使いたいGPGキーIDの長い形式をコピーしてください。 この例では、GPG キー ID は
3AA5C34371567BD2
です。Shell $ 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
$ 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
-
Git でプライマリ GPG 署名キーを設定するには、以下のテキストを貼り付けて、使いたいプライマリ GPG キー ID に置き換えます。 この例では、GPG キー ID は
3AA5C34371567BD2
です。git config --global user.signingkey 3AA5C34371567BD2
一方、サブキーを使用したい場合もあります。 この例の GPG サブキー ID は
4BB6D45482678BE3
です。git config --global user.signingkey 4BB6D45482678BE3
複数のキーとサブキーを使用する場合は、キーに感嘆符
!
を追加して、これが優先キーであることを git に伝える必要があります。 場合によっては、バック スラッシュで感嘆符をエスケープする必要があります (\!
)。 -
必要に応じて、既定ですべてのコミットに署名するように Git を構成するには、次のコマンドを入力します。
git config --global commit.gpgsign true
詳しくは、「コミットに署名する」を参照してください。
-
GPG キーを
.bashrc
スタートアップ ファイルに追加するには、次のコマンドを実行します。[ -f ~/.bashrc ] && echo -e '\nexport GPG_TTY=$(tty)' >> ~/.bashrc
Git に SSH キーについて知らせる
既存の SSH キーを使ってコミットとタグに署名することも、署名専用に新しいキーを生成することもできます。 詳しくは、「新しい SSH キーを生成して ssh-agent に追加する」を参照してください。
注: SSH 署名の検証は、Git 2.34 以降で利用できます。 git の最新バージョンを入手するには、Git の Web サイトを参照してください。
-
[ターミナル][ターミナル][Git Bash] を開きます。
-
コミットやタグの署名に SSH を使うよう Git を構成します。
git config --global gpg.format ssh
-
Git に SSH 署名キーを設定するには、次のテキストを貼り付けて、/PATH/TO/.SSH/KEY.PUB の部分を、使いたい公開キーへのパスに置き換えます。
git config --global user.signingkey /PATH/TO/.SSH/KEY.PUB
Git にX.509 キーについて知らせる
S/MIME を使ってコミットをタグに署名するには、smimesign を使います。
注: S/MIME 署名の検証は、Git 2.19 以降で利用できます。 git の最新バージョンを入手するには、Git の Web サイトを参照してください。
-
smimesign をインストールします。
-
[ターミナル][ターミナル][Git Bash] を開きます。
-
コミットやタグの署名にS/MIMEを使うようGitを設定してください。 Git 2.19 以降では、
git config gpg.x509.program
とgit config gpg.format
コマンドを使用します。-
すべてのリポジトリへの署名にS/MIMEを使うには以下のようにします。
git config --global gpg.x509.program smimesign git config --global gpg.format x509
-
1つのリポジトリへの署名にS/MIMEを使うには以下のようにします。
cd PATH-TO-REPOSITORY git config --local gpg.x509.program smimesign git config --local gpg.format x509
Git 2.18 以前では、
git config gpg.program
コマンドを使用します。 -
すべてのリポジトリへの署名にS/MIMEを使うには以下のようにします。
git config --global gpg.program smimesign
-
1つのリポジトリへの署名にS/MIMEを使うには以下のようにします。
cd PATH-TO-REPOSITORY git config --local gpg.program smimesign
自分のコミッタアイデンティティにマッチにするX.509キーを使っているなら、コミットやタグへの署名を始められます。
-
-
コミッター アイデンティティと一致する X.509 キーを使っていない場合は、
smimesign --list-keys
コマンドを使って証明書と秘密鍵の両方を持っている X.509 キーのリストを表示します。smimesign --list-keys
-
X.509キーのリストから、使いたいX.509キーの証明書IDをコピーしてください。 この例では、証明書 ID は
0ff455a2708394633e4bb2f88002e3cd80cbd76f
になります。$ smimesign --list-keys ID: 0ff455a2708394633e4bb2f88002e3cd80cbd76f S/N: a2dfa7e8c9c4d1616f1009c988bb70f Algorithm: SHA256-RSA Validity: 2017-11-22 00:00:00 +0000 UTC - 2020-11-22 12:00:00 +0000 UTC Issuer: CN=DigiCert SHA2 Assured ID CA,OU=www.digicert.com,O=DigiCert Inc,C=US Subject: CN=Octocat,O=GitHub\, Inc.,L=San Francisco,ST=California,C=US Emails: octocat@github.com
-
X.509署名キーをGitに設定するには、証明書IDをさきほどコピーしたものに置き換えて以下のテキストを貼り付けてください。
-
すべてのリポジトリへの署名にX.509キーを使うには以下のようにします。
git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f
-
1つのリポジトリへの署名にX.509キーを使うには以下のようにします。
cd PATH-TO-REPOSITORY git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f
-
Git にX.509 キーについて知らせる
S/MIME を使ってコミットをタグに署名するには、smimesign を使います。
注: S/MIME 署名の検証は、Git 2.19 以降で利用できます。 git の最新バージョンを入手するには、Git の Web サイトを参照してください。
-
smimesign をインストールします。
-
[ターミナル][ターミナル][Git Bash] を開きます。
-
コミットやタグの署名にS/MIMEを使うようGitを設定してください。 Git 2.19 以降では、
git config gpg.x509.program
とgit config gpg.format
コマンドを使用します。-
すべてのリポジトリへの署名にS/MIMEを使うには以下のようにします。
git config --global gpg.x509.program smimesign git config --global gpg.format x509
-
1つのリポジトリへの署名にS/MIMEを使うには以下のようにします。
cd PATH-TO-REPOSITORY git config --local gpg.x509.program smimesign git config --local gpg.format x509
Git 2.18 以前では、
git config gpg.program
コマンドを使用します。 -
すべてのリポジトリへの署名にS/MIMEを使うには以下のようにします。
git config --global gpg.program smimesign
-
1つのリポジトリへの署名にS/MIMEを使うには以下のようにします。
cd PATH-TO-REPOSITORY git config --local gpg.program smimesign
自分のコミッタアイデンティティにマッチにするX.509キーを使っているなら、コミットやタグへの署名を始められます。
-
-
コミッター アイデンティティと一致する X.509 キーを使っていない場合は、
smimesign --list-keys
コマンドを使って証明書と秘密鍵の両方を持っている X.509 キーのリストを表示します。smimesign --list-keys
-
X.509キーのリストから、使いたいX.509キーの証明書IDをコピーしてください。 この例では、証明書 ID は
0ff455a2708394633e4bb2f88002e3cd80cbd76f
になります。$ smimesign --list-keys ID: 0ff455a2708394633e4bb2f88002e3cd80cbd76f S/N: a2dfa7e8c9c4d1616f1009c988bb70f Algorithm: SHA256-RSA Validity: 2017-11-22 00:00:00 +0000 UTC - 2020-11-22 12:00:00 +0000 UTC Issuer: CN=DigiCert SHA2 Assured ID CA,OU=www.digicert.com,O=DigiCert Inc,C=US Subject: CN=Octocat,O=GitHub\, Inc.,L=San Francisco,ST=California,C=US Emails: octocat@github.com
-
X.509署名キーをGitに設定するには、証明書IDをさきほどコピーしたものに置き換えて以下のテキストを貼り付けてください。
-
すべてのリポジトリへの署名にX.509キーを使うには以下のようにします。
git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f
-
1つのリポジトリへの署名にX.509キーを使うには以下のようにします。
cd PATH-TO-REPOSITORY git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f
-