意識が低いので適当にGitHubのアカウントに GPG key を設定する
Insider PreviewのBuild 14316が話題になった同じ頃に、GitHubがGPG keyに対応。「Windowsで使えるようになったBashで、その辺りの作業ができるのですか?」というエントリーを書こうとしたのですが、Fast Ringにも係わらずアップデートが来ないのでGit for Windowsを利用して試そう。というエントリー。
Generating a GPG key - User Documentation
必要なことはこちらに大体書いてあります。(英文)
既に鍵を持っているか確認する
Git Bashを開いて gpg --list-keys
と入力してリストを表示させます。
利用したことが無い場合は、自動的に管理用のファイルが生成されます。
もう一度実行させてみましょう。
リストが無いため何も表示されませんでした。
管理するべき鍵が何もないという気楽な状態です。良かったですね。
残念ながら既に鍵を持ち、その鍵をGitHubで利用する場合は、登録ページへ進みましょう。 :)
新しいGPG keyを生成する
GPGコマンドラインツールなどを用意して、管理と利用ができる環境を整えます。そして、有効なメールアドレスを用意します。
Git Bashを開き gpg --gen-key
と入力してエンターキーを押すと、生成するための質問が始まります。
マウスが利用できる環境では、右クリックで貼り付けをしたり、表示されている物を選択してコピーする事ができます。積極的に利用すると良いでしょう。
鍵の種類を決定する
ここでは1番目の RSA and RSA
を選択します。
鍵の長さを入力します。今回は、長さ 4096
で生成します。
鍵の有効期限を決定します。今回は期限なしに設定するため 0
にします。
本当にこれで良い? 良いです。
ユーザーIDを作成する
鍵で利用する情報を入力します。
正しく、有効なメールアドレスと、名前の準備はできましたか?
準備ができたら入力を進めましょう。 :)
名前を正しく入力します。
メールアドレスを正しく入力します。
コメントが必要であれば入力します。(空欄のままでも可)
間違いはありませんか?問題が無ければ O
(オー)を、変更する必要がある場合は、属性の頭文字(N、C、E)を入力します。
鍵の保護のために利用されるパスワードを(確認を含む)2回入力します。
もし、ここでパスワードを入力せずに進めると
You don't want a passphrase - this is probably a *bad* idea!
I will do it anyway. You can change your passphrase at any time,
using this program with the option "--edit-key".パスワードを設定しないのか。それはダメなアイデアだね!
でも、とにかく鍵は生成するよ。いつでも編集はできるから、gpg --edit-key
で設定するように。(意訳)
という警告をした上で生成してくれます。
鍵の生成と利用するための下準備が終わるまで少しだけ時間が掛かります。処理が終わるとリストの一覧を表示して終了します。
結果を確認する
gpg: key 68A83528 marked as ultimately trusted
68A83528 という鍵IDを最大限に信用する設定して
public and secret key created and signed.
公開鍵と秘密鍵を作成して、署名しました。
GPG key を使用する準備ができました。
(という訳で、ここで比較用にサクッともう一つ作ります)
鍵にユーザーIDを追加する
あっ!GitHubで使っている名前を間違えてしまった!!!コミットに使っているのはニックネームだった!
ユーザーIDの修正でも良いけれど、両方在ってもいいかな?
という訳で、ユーザーIDを追加してみましょう。
編集には、一覧で表示されるメールアドレスまたは鍵IDが必要になります。
gpg --edit-key niyari@users.noreply.github.com adduid
もしくは
gpg --edit-key 68A83528 adduid
と入力する事で
ユーザーIDを追加する事ができます。
必要事項を入れていきましょう。
ユーザーIDの信用できるレベルを設定する
おっと。追加はできましたが「unknown
」になっていますね。最大限に信用できるようにしましょう。
編集処理中ですので trust
コマンドで編集を続行します。
「unknown
」になっているユーザーIDは(2)となっているので、 2
を入力してから trust
と入力します。
ユーザーIDの番号を指定すると
*
が付与されます。
このユーザーIDをどのレベルで信用しますか?と聞かれるので ultimately の 5
としましょう。
確認をして決定すると、変更のキュー(変更予約)に入ります。
※変更操作を終了する際に「保存する」を選択すると反映されます。
ユーザーIDの順序を入れ替える
選択中のユーザーIDを主にする場合は primary
コマンドを使用します。
save
コマンドで作業を記録する事で、すべて反映されます。
gitの操作で署名を利用する
運用の準備をしましょう。
鍵IDを gpg --list-keys
で確認します。
(例:68A83528 の場合) 確認したIDを添えて
git config --global user.signingkey 68A83528
git config --global commit.gpgsign true
と入力する事で、利用できるようになります。
GitHubにGPG公開鍵を登録する
まずは公開鍵を出力してみましょう。(例:68A83528 の場合)
gpg --armor --export 68A83528
出力されます。
GitHubの設定ページにてペタリと貼ります。
Add GPG key をクリックして登録します。
確認のため、GitHubのパスワードを入力します。
GPG keyが登録されました。
登録されましたが、外部から見る事ができるわけではありません。
https://github.com/niyari.keys
とりあえずコミットしてみる
付与された署名を確認してみましょう
git log --show-signature
Windows版 Source Tree で署名をしてコミットしたい
Gpg4winをダウンロードします。
※Gpg4win 2.x または Gpg4win-Light 2.x を利用する想定です。Vanilla版は上手くいきませんでした。
gitの設定で、こちらが必要になります。
※鍵ID 68A83528
の場合
git config --global user.signingkey 68A83528
git config --global commit.gpgsign true
git config --global gpg.program gpg2
Gpg4winでは、このようにインストールオプションを設定するとGUIで弄れるツールが利用できます。
GUIで操作できるため、色々楽にできます。
既に作成済みの鍵をインポート、編集などが簡単にできます。
表示されました。良かったですね。
おまけ
バックアップや使用しなくなった場合の操作も覚えておきましょう。
秘密鍵を出力する
gpg --armor --export-secret-keys 68A83528
とする事で秘密鍵が出力されます。
※取り扱いに注意しましょう
漏えいしない状態で保管します。
鍵を失効(破棄)する
gpg --gen-revoke 68A83528
から失効させるための証明書を作成する事ができます。
理由(選択)とコメント(任意)を入力し、発行確認の為にパスワードを入力する事で、失効証明書が出力されます。
失効証明書の登録
※失効証明書を登録(公開)する事で効力を発揮します。ここではローカルにインポートしました。
鍵を削除する
鍵リストから特定の公開鍵と秘密鍵のペアを削除します。
gpg --delete-secret-and-public-key 68A83528
確認をして削除させます。
余談
日付的にダメ感がある鍵を作る(GitHubには登録ができるが止めておきましょう)
管理は簡潔、かつ確実に行いましょう。 :)
笛とたいこでテンポを管理する熊。