WindowsでGitコミットする際にPGP署名をできるようにしたい。
はじめに
2020年に入り、私はWindowsでgit操作をする場面が激増しました。 macOSでGitコミットする際にPGPで署名していましたので、同様のことをWindowsでも実施できるようにしました。
そもそも、PGPで署名をする動機は署名をするとGitHubが下図の赤枠のように
Verified
と表示され私自身がなんとなく嬉しいからです。
そこで、この記事ではいくつかあるWindows向けGitクライアントのうち、利用者が多いであろうSourceTreeで Gitコミット時にPGP署名をする方法についてご紹介します。
筆者の環境は以下の通りです。
- Windows 10 Pro v1909 (リリースノート)
- SourceTree v3.3.9 (リリースノート)
- Gpg4win v3.1.13 (リリースノート)
それでは、Gitコミット時にPGP署名をするための設定をしていきます。
SourceTreeをインストールする
まず、SourceTreeを入手してインストールします。
Windows版SourceTreeは以下の場所にインストールされます。
|
|
SourceTreeはGitを内臓しており、オプション画面で使用するGitのパスを明記しています。
下記のパスのGitを使っていることがわかります。
|
|
上位フォルダに関心を寄せて以下のフォルダに移ります。
|
|
こちらのフォルダを見ると、 git-bash.exe
や mingw32
フォルダを確認できます。
GPGはバンドルされているのでしょうか。MINGW32があるので /usr/bin/gpg
にある可能性があります。
確認のためエクスプローラーで検索をかけた結果が下図です。
上図の検索結果からGPGが /usr/bin/gpg
にあることがわかります。
SourceTreeのGit BashとGPGのバージョンを確認する
ご存知の通り、SourceTreeのツールバーにある ターミナル
アイコンをクリックするとGit Bashを起動できます。
これはSourceTreeのオプション画面で Git Bashをデフォルトターミナルとして使用
が設定として有効になっているからです。
そのGit Bashは下記の場所にあります。
|
|
Git BashでGPGのバージョンを確認します。
|
|
以下でGPGのリリースノートを確認できます。
どうやら、GPGの最新バージョンは2.2.23で、先月にCVEの対応を入れたようです。
GnuPG version 2.2.23 has been released today. This version fixes a critical security bug in 2.2.21 and 2.2.22 (CVE-2020-25125).
Please follow the instructions from the announcement mail and update affected installations. See also our bug entry #5050.
GPG v2.2.20をそのまま使うのは少々不安が残りますので、Gpg4winを使います。
Gpg4winをインストールする
Gpg4winを下記で入手してインストールします。
インストール時にPGPキーの生成やインポートのGUIを提供する Kleopatra
を選択します。 GPA
はお好みで。
Gpg4winは以下にGPGをインストールします。
|
|
PGPキーは Kleopatra
でインポートできるのですが、お手元にPGPキーがない場合は次節のエクスポート方法を参考にしてください。
PGPキーをエクスポートする
まずはmacOSで使っているPGPキー (秘密鍵と公開鍵) をエクスポートしましょう。 すでにファイルとしてキーをお持ちの場合はそちらをお使いいただければ結構です。
エクスポートは下記のコマンドで可能です。
|
|
PGPキーをKleopatraでインポートする
Kleopatraを起動してインポートボタンをクリックしてインポートしたいPGPキーを選択します。
インポートしたPGPキーは以下で管理されます。
|
|
SourceTreeのGit BashでGpg4winのGPGを使う設定にする
それでは、SourceTreeの Git Bash
でGpg4winのGPGのバージョンを確認します。
|
|
Git BashでGitの設定値を変更します。
|
|
SourceTreeでコミット時にPGP署名をする
コミットします。PGPキーにパスフレーズを設定している場合、コミット処理中に入力を求められます。
GitHubで結果をみてみます。
上図の赤枠部分を見るとPGP署名されていることがわかります。
まとめ
この記事ではGitコミット時にPGP署名をする方法、PGPキーのエクスポートとインポートについてご紹介しました。