この記事は別サイトで執筆したKeybaseに登録した鍵を使ってWSLを使わずにWindowsでgitの署名付きcommitをする – ひつじぶどうの内容を加筆・修正した上で転載しています。
はじめに
どうも✋(´・ᴗ・` )
言いたいことは掲題の通りです。
WSL, 悪くはないと思うんですがフォントの設定があんまりうまくいかなかったり個人的にはあまり便利には使えていないので, できればPowerShellだけで済ませたい人向けの記事です。
※オリジナルの記事執筆時点での感想です。今は良さげな気がします。
Keybase の鍵で GitHub のコミットに Verified バッジをつける – Qiita
基本的にはここで書かれている内容をWindowsでやりましょうというお話です。
macOS向けの記事ではあるものの, なんかまぁ適当に読み替えればいけるかなと思ったけどそうではない感じだったので忘れないようにまとめておこうみたいなモチベで書きました。
鍵の管理にはKeybaseを使っています。
手順
Keybaseのインストール
Keybaseを使って鍵の管理をしたいので, インストールしていなければインストールしておきます。
公式サイトからインストーラーをダウンロードしてインストールしてください。
The App – Install Windows | Keybase Docs
Gpg4winのインストール・設定
Windowsでgpgを使うには”Gpg4win”をインストールします。
gpgはWindows向けのバイナリは公式には配布されていませんが, The Gpg4win Initiativeが開発しているWindows向けバイナリを使用します。
インストールにはChocolateyを使いましたが別にGUIインストーラーを使っても良いとは思います。
PowerShellを「管理者として実行」して
PS> choco install gpg4win
でインストール。
Keybase の鍵で GitHub のコミットに Verified バッジをつける – Qiita には”pinentry”という, 秘密鍵のパスフレーズを入力する時に使用するソフトのインストールも一緒にすることになっていますが, Gpg4winにはpinentryが同梱されているので特段のインストール操作は不要です。
下記のコマンドを実行して, gpg-agent.conf にpinentryの場所を教えてあげます。
(pinentry-basic
の場所が不明だったので, Get-Command pinentry-basic.exe | Select-Object Name, Source
を実行して探しました。)
PS> Write-Output "pinentry-program `"C:\Program Files (x86)\GnuPG\bin\pinentry-basic.exe`"" > $env:APPDATA\gnupg\gpg-agent.conf
PS> gpgconf --kill gpg-agent
GPGへのKeybaseの鍵の登録
これは Keybase の鍵で GitHub のコミットに Verified バッジをつける – Qiita に書かれていることと同じことをすればOKです。
PS> keybase pgp export | gpg --import
PS> keybase pgp export --secret | gpg --allow-secret-key --import
上記のコマンドを実行するとまず秘密鍵に設定するパスフレーズを訊かれますので, 適宜入力してください。
こんな感じの表示が出ればOKです。
gpg: 鍵****************:"Ray Nanamiya <****@**********>"変更なし
gpg: 鍵4F7AF2B0AF315E05: 秘密鍵をインポートしました
gpg: 処理数の合計: 1
gpg: 変更なし: 1
gpg: 秘密鍵の読み込み: 1
gpg: 秘密鍵のインポート: 1
github.comに公開鍵情報を登録する
公開鍵をコピーするために, Keybaseの自身のプロフィールページに行き, ここをクリックします。
Githubの自身のプロフィールページにアクセスし, 画面右上のSettingsをクリックします。
「New GPG Key」をクリックしてコピーしたGPGキーを登録します。
gitに鍵情報等を登録する
これまでの手順で鍵のインポートが終わったので, gitに鍵の情報と鍵を扱うアプリケーションの登録をします。
まずは鍵情報を確認します。
PS> gpg --list-secret-keys
C:/Users/user_name/AppData/Roaming/gnupg/pubring.kbx
sec rsa4096 2019-09-29 [SC] [有効期限: 2035-09-25]
E474*************************************
uid [ 不明 ] Ray Nanamiya <****@**********>
ssb rsa4096 2019-09-29 [E] [有効期限: 2035-09-25]
この”E474″から始まるキーをgitに登録します。
PS> git config --global user.signingkey E474*************************************
次に下記のコマンドでgpg.exeのパスをgitに登録します。
git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
gpg.exeの場所がわからない時は Get-Command gpg | Select-Object Name, Source
あたりを打って確認してください。
以上で手順は完了です。
GPG鍵を使った署名をしたcommitをするには git commit -S -m "...
のように -S
オプションを付加します。