Closed14

GPGキーの設定 (2023-10-13記録)

murnanamurnana

新しいPCをセットアップ…
GittHubのコミット署名のための、GPGキーを設定します。

murnanamurnana
 winget search gpg

で「Gpg4win」を探し当て

winget install  GnuPG.Gpg4win

でインストール

murnanamurnana

入れたら、ターミナルを再起動してコマンドを入れていく。

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」キーを入れてから、エンターする

murnanamurnana
GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。

本名:

「本名」って書かれているけれど、私は GitHubのIDを使うことにします。

電子メール・アドレス:

GitHubアカウントの認証済みメールアドレスか、GitHubが用意してくれているコミットメールアドレスを入れます。
私はコミットメールアドレスを選択。コミットするときはいつもそのアドレスを使っているので。

コメント:

この鍵はなんですか?というメモ。
英語でかっこよく「GitHub commit signature verification key」とメモ。

次のユーザIDを選択しました:
    "本名 (コメント) <電子メール・アドレス>"

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)?

最終確認。オッケーなら「o」キーを入れてエンターを押す

murnanamurnana

パスフレーズの入力
認証キーを使う度に入力を迫られるタイプのパスワード…
えっとつまり、生成するGPGキーを保護するためのパスワードを設定します。

急いで入れてね!私はスクショとったり、下記のテキストをコピーしてたらタイムアウトして、最初からやり直しになった…

たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。

「エントロピー」とか厨二っぽいこと書いてありますが、要は入力によって何度も乱数を生成しているのでいっぱいガチャガチャしてね!ということっぽい。

murnanamurnana

生成に成功すると

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]

こういう雰囲気のログが出る

murnanamurnana

あとは 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-----

をまたコピーしておく。

murnanamurnana

まあ、折角なのでスクショしていく。
まずは https://github.com/ にアクセスする。

そしたら、右上のアカウントアイコンを押して、

メニューの「Settings」ボタンを押す。

murnanamurnana

設定画面になるので、「SSH and GPG keys」を選択

右側のリストのどこかにある「New GPG key」ボタンを押す

murnanamurnana

追記:

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
このスクラップは2023/10/13にクローズされました