すなばいじり

はてなブログを使って、トンピーを揃えるまで止めないブログ。ふっくらかわいい。

WindowsにてGitHubのアカウントにGPG key を設定する

意識が低いので適当に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を追加する

鍵が2つ

あっ!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


と入力する事で、利用できるようになります。

gitの設定

 

GitHubにGPG公開鍵を登録する

まずは公開鍵を出力してみましょう。(例:68A83528 の場合)

gpg --armor --export 68A83528

 

公開鍵が出力される
出力されます。

 

GitHubの設定ページにてペタリと貼ります。

githubにGPG keyを登録
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で使いたい

GUIで操作できるため、色々楽にできます。

GUIで色々やれます
既に作成済みの鍵をインポート、編集などが簡単にできます。

 

 

表示されました。良かったですね。

表示されました。良かったですね

 

おまけ

バックアップや使用しなくなった場合の操作も覚えておきましょう。

秘密鍵を出力する

gpg --armor --export-secret-keys 68A83528

とする事で秘密鍵が出力されます。

秘密鍵を出力
※取り扱いに注意しましょう

漏えいしない状態で保管します。

 

鍵を失効(破棄)する 

gpg --gen-revoke 68A83528

から失効させるための証明書を作成する事ができます。

理由を入力理由(選択)とコメント(任意)を入力し、発行確認の為にパスワードを入力する事で、失効証明書が出力されます。

 

失効証明書の登録

失効させる
※失効証明書を登録(公開)する事で効力を発揮します。ここではローカルにインポートしました。

 

鍵を削除する

鍵リストから特定の公開鍵と秘密鍵のペアを削除します。

gpg --delete-secret-and-public-key 68A83528

 

鍵の削除
確認をして削除させます。

 

 

余談

日付がおかしい日付的にダメ感がある鍵を作る(GitHubには登録ができるが止めておきましょう)

 

 

管理は簡潔、かつ確実に行いましょう。 :)

 

 

笛とたいこでテンポを管理する熊。

NEW リズムでともだち こぐまのトンピー

NEW リズムでともだち こぐまのトンピー