LoginSignup
1

More than 3 years have passed since last update.

Keybaseに登録した鍵を使ってWSLを使わずにWindowsでgitの署名付きcommitをする

Posted at

:information_source: この記事は別サイトで執筆した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

上記のコマンドを実行するとまず秘密鍵に設定するパスフレーズを訊かれますので, 適宜入力してください。
秘密鍵設定.png

こんな感じの表示が出ればOKです。

gpg: 鍵****************:"Ray Nanamiya <****@**********>"変更なし

gpg: 鍵4F7AF2B0AF315E05: 秘密鍵をインポートしました
gpg:           処理数の合計: 1
gpg:               変更なし: 1
gpg:       秘密鍵の読み込み: 1
gpg:     秘密鍵のインポート: 1

github.comに公開鍵情報を登録する

公開鍵をコピーするために, Keybaseの自身のプロフィールページに行き, ここをクリックします。
Keybase.png

ここに表示されている文字列をコピーします。
公開鍵コピー.png

Githubの自身のプロフィールページにアクセスし, 画面右上のSettingsをクリックします。
GIthubSettings.png

「New GPG Key」をクリックしてコピーしたGPGキーを登録します。
AddNewGpgKey.png

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 オプションを付加します。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1