コンテンツにスキップ

Windows環境でのGitコミット署名設定手順

この手順では、Windows環境でGPG (GNU Privacy Guard) を使用してGitコミットに署名を付ける方法を説明します。これにより、GitHubでコミットに”Verified”マークが表示されるようになります。

1. GPG for Windows (Gpg4win) のインストール

Section titled “1. GPG for Windows (Gpg4win) のインストール”
Terminal window
choco install gpg4win -y --ignore-checksums
Terminal window
gpg --full-generate-key

コマンドを実行すると、以下の情報を入力するよう求められます:

  • 鍵の種類: RSA and RSA (デフォルト)
  • 鍵長: 4096ビット
  • 有効期限: 0 (無期限) または適切な期間
  • 名前: あなたの名前またはGitHubユーザー名
  • メールアドレス: GitHubに登録しているメールアドレス
  • パスフレーズ: 安全なパスフレーズ

注意: パスフレーズは必ず覚えておくか、安全な場所に保管してください。

gpg: C:\\Users\\n0166\\AppData\\Roaming\\gnupg\\trustdb.gpg: 信用データベースができました
gpg: ディレクトリ'C:\\Users\\n0166\\AppData\\Roaming\\gnupg\\openpgp-revocs.d'が作成されました
gpg: 失効証明書を 'C:\\Users\\n0166\\AppData\\Roaming\\gnupg\\openpgp-revocs.d\\571397233557986B568D5F009ABD5929EBDD32F7.rev' に保管しました。
公開鍵と秘密鍵を作成し、署名しました。
pub rsa4096 2024-10-09 [SC]
571397233557986B568D5F009ABD5929EBDD32F7
uid nichicom-sakurai <sakurai.yuki@nck.co.jp>
sub rsa4096 2024-10-09 [E]
Terminal window
gpg --list-secret-keys --keyid-format LONG
gpg: 信用データベースの検査
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: 深さ: 0 有効性: 1 署名: 0 信用: 0-, 0q, 0n, 0m, 0f, 1u
[keyboxd]
---------
sec rsa4096/9ABD5929EBDD32F7 2024-10-09 [SC]
571397233557986B568D5F009ABD5929EBDD32F7
uid [ 究極 ] nichicom-sakurai <sakurai.yuki@nck.co.jp>
ssb rsa4096/02B1C3AC0203DC74 2024-10-09 [E]

上記の出力から、sec行の鍵ID(この例では9ABD5929EBDD32F7)をメモしておきます。

先ほどメモした鍵IDを使用して、公開鍵をエクスポートします:

Terminal window
$ gpg --armor --export 9ABD5929EBDD32F7
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGcFzksBEACzzMCUS6xSTJyRKbEE/hgT7zEScNUvgzu14gh6xrmMl7NniwSQ
2ZbexcsIontpCVePDHn8MXMpaaJ/wV7iuRTelQ43zWWHM3v5NX7G6wUXcVRl+czT
ExgqluCfMETP3L17QbHRFnD/TopSvDLSVFiMjgEwvU6n3mfa74FK+wilHbSheyfk
z4vW/HTsGKwBfNgi5GMD/7LwpouDFEcHYml/Qi6QYP56xPj2xoxN1lE7Wpsd9Z9C
n90ppJZ/D9L1BnaDtnbMyVbXcw021yS/74NqFXRSx+tXtE/LIb9xMNOqsmKE6oQe
CANv67+uALCnfj/C3GTc3bg2qNhWmKdb5/BTOfM3UU1mpAgJR6aZNjo6a1i8h8tH
w5UtU0Z4co/dh5ah06qmsii8Z4pjCskPPvVHGCD3RTTVssLjJXM36QFY8VKXnSRJ
x5IH6r3it53USK1ePG0x2anSEgtHPf4Y7HXZ8JIsSdOULocnFDIQUDrZherSsgwC
HE327mAQawxsxaNvOsRx0GPg7+B5cd8yB6N9YOJHDUpI1p5Ui9Bwvwsp1/MBAjRM
FcZ3nSQncc0F4L4w+Y8TqWdvVlBnyl5+IXoeBSLsXB8frbujMytnk5joLC3dR5cJ
zB5tQfmvzDAmEYbfe4ewqTuXJsRNfbgEVSIXUdNPnjYrzGZAIwBheQCSSQARAQAB
tCluaWNoaWNvbS1zYWt1cmFpIDxzYWt1cmFpLnl1a2lAbmNrLmNvLmpwPokCUQQT
AQgAOxYhBFcTlyM1V5hrVo1fAJq9WSnr3TL3BQJnBc5LAhsDBQsJCAcCAiICBhUK
CQgLAgQWAgMBAh4HAheAAAoJEJq9WSnr3TL3hsAQAIzc/hS+R9FUY898LUrlpsoz
oO5pUdgMfp+4qIbeQOLnPTNH15Z4WngO8uY5V0PGKxIXmaxmqQw3y//eiabNP0ND
WYnxZQ/z27i1SZH1Suo0i6cF8bfQAClHEylnkMirOEqhUMICaknOmcbnWXaNtrVJ
n0PjZ8oGNEawE/WgnWv1kpkW0et0Cjd0rOat2s+XltMx6dsiRjW5lgDyEVqxDXVS
urOPdyeIMKwQIY8fTnxYibyml6U27z0GJJMQjCI8Qqx3+lLEszKwPbtNvcWhYI2Y
SGoHgcUvnA3Gwq91V6S3BfGOHWidiu/L3z13172eE8xo1S9FFHPo7gNr/WBJRzFI
SfM34cPPBKnk73FaoauTc2cyKBYVoewOEL8EVBgaly4p0OBv5aNNueeIYug/lC+b
bzhMXtmeXo5A+lBsrxLFoDr1TyrYGnjKIHTiYIokaaeJDOv6tBpksg1E9wA+yhFW
k8XPrRz4LPDiPIzi8NpMqSsAbDxBFSxHhzdsU3XjphdvEsBQoDM8Ci5peujy+Qzj
Jl/2sKtZRb9QIAfs0Wdp0OM/sb+O9vOnF+tHsoMkvkxAzL0UYPgqt/sJf9n+jPDO
CGRh+1DBi9TFm3jv5DTp0RTlEgFTjPAR5RR+SbQx3PV+2LUV0GbeRhiPUrBAny6z
5nbOzzOg19OG5BArJQD9uQINBGcFzksBEADeg5Ubbr5xos0UrrqZKlL0Ra/ifwwN
YDvPAcN1VhI5CJfbihU/DjXQGDfgI3Nq1DJns/tnfVOR4cLpmoXymDoFRzKCtqSx
fDNMd7BxAvxZDSODrwq/Jojo3exYQAep2+nhs3drxOU2z00erZgoUQyRQcP+AuIT
j2FQiunu32eLd9PE5p+5297g9WsH6wPi8BA3M1oN4I8bRDY3XVQ1D0W4XSELtVb0
EjnrRu/6aVHvBOB3oMnywbq6W0/EWiqRsU7XVIK/U219To77PjnxDWRDwFiTLYcL
LHFIPt3tEzZwTGvMfyDUcmVLcaw/mrslDJeB4AV3eId8GWC/2EThWK81fSpRgyLw
1D2fPYPiPkYQNTZntvG07hkN4IeHhPsXTqXja/2Gc2dZtE48oGJvHJldCF6otUv0
GE2qwNUbQGTJeE+sR/l9PM7e6WASl0kASFLMAmuXyzXOw0j2XtYJQAJ6sJnhYikq
b+ucY6IlapnTcA4ZNO9Z8xb4SmlRMRrTySU0D+7Ula0G/LGDCthmE2TIwu73/FDm
10E4kwD103Qo9v6WsWd89lj2TkOQ0/5uu1/wyDOifhWnv13j5D7eW9NLQZ/q0wiw
fYTOQnGNeO9WFlxhFQDWjPp7ShOB6BtVvyHl0J8YVcDvqbAseEwMlX1t48eIrO8Z
Mj8DmNY/nHN/EQARAQABiQI2BBgBCAAgFiEEVxOXIzVXmGtWjV8Amr1ZKevdMvcF
AmcFzksCGwwACgkQmr1ZKevdMve7CQ/+Iot16WOvfqb3Edgu6Ax/dTFzuCf1Gufp
KK5VJl94qUvXUscKNGKPZ3p/PpOJOzpbAtRBT4Ir2WD2hap8fiM3QrdP2DYs6Z+D
LInpwIv0svaw6Mg2ug60nITf5JbbnBZDkyjFYskOubkx54/SepNx8pAxLwmf03Q5
w30YCfPoC9ETfUQoX+GBvochPYwVZRHkr+sOzyi5UAjMX++8nUA1P67kWJQRRomV
6a0sOENESmdqCpa0Lt1WWboDYK9bnZcelMNQu5sbwjvZyWOMlxzONrU7jNBcrkpu
Z/LQkvAvP/dRcVu7pjfLWwavbXRYPIpKBwoLYga0o95D7D4vWJ/mQJ+47iX42zEr
psD+2cnORstY8a2O1s/k+l7EWZ8RLy25OLFEGryQGiq7R9qlHTMzCQUPlLJQs4+j
QYZjE8lFV4ujyuND/NrXvcTenkRtAKrOWR71wq3l5oha0LM1dBgUiI+ZpCdfdOzB
RTs6k8J2MELC+0153/NjpkEchKDrBDTt0GvBbaNam/8c6qUA3IVMbGIX2pP3iaWG
V3JbyrpacIPZN5g5Qj9TWQSdpz3y9dM/SbGyCW4i8MmElBXWr+mk/eeK/W/7+hvD
3d0OjdBpEwUUTvuXhHF87yM026qnWyMNXmPR+L9ANJBgXkLXb6xlYiM/kHSuSk3r
AgD1l6G7R4U=
=luqR
-----END PGP PUBLIC KEY BLOCK-----

出力された-----BEGIN PGP PUBLIC KEY BLOCK-----から-----END PGP PUBLIC KEY BLOCK-----までの全てをコピーします。

  1. GitHubのGPG鍵設定ページにアクセス
  2. 先ほどコピーした公開鍵をテキストエリアに貼り付け
  3. “Add GPG key”をクリック
Terminal window
# グローバル設定(あなたの鍵IDに置き換えてください)
git config --global user.signingkey 9ABD5929EBDD32F7
# 設定確認
git config --global -e

毎回-Sオプションを付ける代わりに、全てのコミットで自動的に署名するよう設定できます:

Terminal window
# グローバル設定(推奨)
git config --global commit.gpgsign true
# 特定のリポジトリのみで設定する場合
git config commit.gpgsign true

GPGプログラムのパス設定(Windows特有)

Section titled “GPGプログラムのパス設定(Windows特有)”
Terminal window
git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"

注意: Gpg4winのインストール先によってパスが異なる場合があります。以下のコマンドで確認できます:

Terminal window
where gpg
Terminal window
# -Sオプションを付けてコミット
$ git commit -S -m 'コミットメッセージ'

自動署名が設定されている場合

Section titled “自動署名が設定されている場合”
Terminal window
# 通常通りコミットするだけで署名される
$ git commit -m 'コミットメッセージ'

「 No secret key」エラーが出る場合

Section titled “「 No secret key」エラーが出る場合”
gpg: skipped "XXXXXX": No secret key

このエラーは以下の原因が考えられます:

  1. GPGプログラムのパスが正しく設定されていない

    Terminal window
    git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
  2. 鍵IDが正しく設定されていない

    Terminal window
    # 鍵の再確認
    gpg --list-secret-keys --keyid-format LONG
    # 正しい鍵IDで再設定
    git config --global user.signingkey YOUR_KEY_ID
  3. Gitのユーザー情報とGPG鍵のメールアドレスが一致していない

    Terminal window
    # Gitのユーザー情報確認
    git config --global user.email

パスフレーズ入力が求められない場合

Section titled “パスフレーズ入力が求められない場合”

Windows環境では、GPGエージェントが動作していない可能性があります。Gpg4winに含まれるKleopatraを起動しておくと解決することがあります。

コミットが正しく署名されているか確認するには:

Terminal window
# 最新のコミットの署名を確認
git log --show-signature -1
# 署名の検証
git verify-commit HEAD

署名付きコミットをプッシュした後、GitHub上でコミットの横に”Verified”バッジが表示されれば成功です。

Terminal window
# 署名付きコミットの一覧表示
git log --show-signature
# 特定のコミットの署名検証
git verify-commit <commit-hash>