Skip to main content

Gpg4winのgpg-agent.confの場所

· 3 min read
mebiusbox
engineer

Gpg4winのgpg-agent.confを置く場所について書いておきます.

Gitで署名付きコミットをするためにGPGキーが必要なので、Gpg4winをインストールしました. WinGetでインストールできます.

PS > winget install GnuPG.Gpg4win

現在のバージョンは 4.3.1 です. キーを生成して、GitとGitHubに登録. Gitの設定で常に署名付きコミットをするために以下の設定をしました.

PS > git config --global commit.gpgsign true

また、gpg.exe のパスをgitに設定しておく必要があります.

PS > git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"

あとは、普通にコミットすればパスフレーズの入力が求められるので、正しく入力できればコミットできます. 署名付きコミットをGitHubにプッシュすれば、Verifiedがつきます.

info

グローバルで署名付きコミットを有効にしない場合、コミット時に -S オプションをつけると署名付きになります.

info

署名付きでコミットされているかはGitのlogコマンドで --show-signature オプションを指定すると確認できます.

で、パスフレーズの入力は gpg-agent がある程度キャッシュしてくれるのですが、その期間は標準だと10分しかありません. 最大で2時間です.現在の設定は gpgconf で確認できます.

PS > gpgconf --list-options gpg-agent

標準のキャッシュ期間はちょっと短すぎるので、もっと長くしたいです. そのためには gpg-agent.conf ファイルを生成して、そこに設定を書きます. このファイルは $env:appdata\gnupg\ に置きます.

ちなみに、このファイルの置き場所として ~\.gnupg\ に置くとネットでは書かれているものが多いのですが、 Gpg4win 4.3.1 では認識されませんでした.確認はしてませんが、Git for Windowsに同梱されている gpg はこちらを参照するようです.

設定ファイルを作成できたら、反映されたか確認します.

PS > gpgconf --reload gpg-agent
PS > gpgconf --list-options gpg-agent
...
default-cache-ttl:24:0:expire cached PINs after N seconds:3:3:N:600::31536000
max-cache-ttl:24:2:set maximum PIN cache lifetime to N seconds:3:3:N:7200::31536000
...

以下のコマンドでも設定ファイルをリロードできるようですが、ちゃんと反映されているかどうかわからないので上記のコマンドをオススメします.

PS > gpg-agent reloadagent /bye

以上です.