GPGキーの設定 (2023-10-13記録)
新しいPCをセットアップ…
GittHubのコミット署名のための、GPGキーを設定します。
毎回公式のドキュメントと、
かりやさんの記事みてる
winget search gpg
で「Gpg4win」を探し当て
winget install GnuPG.Gpg4win
でインストール
入れたら、ターミナルを再起動してコマンドを入れていく。
gpg --full-generate-key
そうすると、
gpg (GnuPG) 2.4.3; Copyright (C) 2023 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
ご希望の鍵の種類を選択してください:
(1) RSA と RSA
(2) DSA と Elgamal
(3) DSA (署名のみ)
(4) RSA (署名のみ)
(9) ECC (署名と暗号化) *デフォルト
(10) ECC (署名のみ)
(14) カードに存在する鍵
あなたの選択は?
と返ってくるので、GitHubのドキュメントに従ってデフォルト、つまりこのままエンターキーを押す。
ご希望の楕円曲線を選択してください:
(1) Curve 25519 *デフォルト
(4) NIST P-384
(6) Brainpool P-256
あなたの選択は?
これもデフォルトにしちゃう
鍵の有効期限を指定してください。
0 = 鍵は無期限
<n> = 鍵は n 日間で期限切れ
<n>w = 鍵は n 週間で期限切れ
<n>m = 鍵は n か月間で期限切れ
<n>y = 鍵は n 年間で期限切れ
鍵の有効期間は? (0)
これも、ずっと使う予定なのでデフォルトの無期限。
期限は、例えばAWSで立ち上げた一時的なインスタンスなんかに使うのだろうか…?
鍵は無期限です
これで正しいですか? (y/N)
最終チェック。ヨシ! なら「y」キーを入れてから、エンターする
GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。
本名:
「本名」って書かれているけれど、私は GitHubのIDを使うことにします。
電子メール・アドレス:
GitHubアカウントの認証済みメールアドレスか、GitHubが用意してくれているコミットメールアドレスを入れます。
私はコミットメールアドレスを選択。コミットするときはいつもそのアドレスを使っているので。
コメント:
この鍵はなんですか?というメモ。
英語でかっこよく「GitHub commit signature verification key」とメモ。
次のユーザIDを選択しました:
"本名 (コメント) <電子メール・アドレス>"
名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)?
最終確認。オッケーなら「o」キーを入れてエンターを押す
認証キーを使う度に入力を迫られるタイプのパスワード…
えっとつまり、生成するGPGキーを保護するためのパスワードを設定します。
急いで入れてね!私はスクショとったり、下記のテキストをコピーしてたらタイムアウトして、最初からやり直しになった…
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
「エントロピー」とか厨二っぽいこと書いてありますが、要は入力によって何度も乱数を生成しているのでいっぱいガチャガチャしてね!ということっぽい。
生成に成功すると
gpg: ディレクトリ'C:\\Users\\PCユーザー名\\AppData\\Roaming\\gnupg\\openpgp-revocs.d'が作成されました
gpg: 失効証明書を 'C:\\Users\\PCユーザー名\\AppData\\Roaming\\gnupg\\openpgp-revocs.d\\パブリックなGPGキーの文字列.rev' に保管しました。
公開鍵と秘密鍵を作成し、署名しました。
pub 鍵の種類の名前 作成した日時 [SC]
パブリックなGPGキーの文字列
uid 本名 (コメント) <電子メール・アドレス>
sub 楕円曲線の名前 作成した日時 [E]
こういう雰囲気のログが出る
あとは GitHubの手順通りに進めていく。
gpg --list-secret-keys --keyid-format=long
で、GPGキーの一覧を出すと、こんな雰囲気のやつがでる
gpg: 信用データベースの検査
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: 深さ: 0 有効性: 1 署名: 0 信用: 0-, 0q, 0n, 0m, 0f, 1u
[keyboxd]
---------
sec 鍵の種類の名前/GPGキーID 作成した日時 [SC]
パブリックなGPGキーの文字列
uid [ 究極 ] 本名 (コメント) <電子メール・アドレス>
ssb 楕円曲線の名前/??????? 作成した日時 [E]
[ 究極 ]
はマジで「[ 究極 ]
」と書いてある。意味が分からない…
で、sec 鍵の種類の名前/GPGキーID 作成した日時 [SC]
の位置にある GPGキーID
をクリップボードに持っておく。
そしたら
gpg --armor --export GPGキーID
と入れて、
-----BEGIN PGP PUBLIC KEY BLOCK-----
なんかよくわからん文字列なんかよくわからん文字列なんかよくわからん文字列
なんかよくわからん文字列なんかよくわからん文字列なんかよくわからん文字列
なんかよくわからん文字列なんかよくわからん文字列なんかよくわからん文字列
なんかよくわからん文字列なんかよくわからん文字列なんかよくわからん文字列
なんかよくわからん文字列なんかよくわからん文字列なんかよくわからん文字列
なんかよくわからん文字列なんかよくわからん文字列なんかよくわからん文字列
なんかよくわからん文字列なんかよくわからん文字列なんかよくわからん文字列
なんかよくわからん文字列なんかよくわからん文字列なんかよくわからん文字列
なんかよくわからん文字列なんかよくわからん文字列なんかよくわからん文字列
なんかよくわからん文字列なんかよくわからん文字列なんかよくわからん文字列
なんかよくわからん文字列なんかよくわからん文字列なんかよくわからん文字列
なんかよくわからん文字列なんかよくわからん文字列なんかよくわからん文字列
なんかよくわからん文字列なんかよくわからん文字列なんかよくわからん文字列
-----END PGP PUBLIC KEY BLOCK-----
をまたコピーしておく。
できたら、GitHubアカウントに設定していく。
どこで設定するのかは、ドキュメントをみればよろし。
設定画面になるので、「SSH and GPG keys」を選択
右側のリストのどこかにある「New GPG key」ボタンを押す
「Title」に設定したマシンのわかりやすい名前、
「Key」には、-----BEGIN PGP PUBLIC KEY BLOCK-----
から -----END PGP PUBLIC KEY BLOCK-----
で終わるやつを入れる。
あとはコミットを試すだけ。おわり!
追記:
Git: gpg: skipped "<key id>": No secret key エラー
的な奴がでたので
Get-Command gpg | fl
で gpg実行ファイルのパスを取得、
git config --global gpg.program "<path to gpg>"
で、Gitに gpg コマンドのパスを渡してから、
gpgでコミット署名をすることを設定。
私はいつも使うので、グローバルに設定しちゃいます。
git config --global commit.gpgsign true
git config --global user.signingkey GPGキーID