commit に自動で署名を付ける
git config user.signingkey 192401039+skyflare2001@users.noreply.github.com
git config commit.gpgsign true
Password and authentication
- Security Keys は FIDO U2F が使われている。
- ログイン時には、パスワードの入力が必要。
- Passkeys は FIDO2 で、Yubikey の場合、PIN 入力が求められる。
- Passkey でログインする場合は、ユーザ名、パスワードの入力がいらない。
- ykman fido credentials list で登録された情報を確認すると、
github.com d829230454ed43b9... account-name
の形式で登録が追加されていた - 同じ Passkey に複数の github アカウントを登録すると、
github.com d829230454ed43b9... account-name
1github.com 3027caa4c1f296744ed340c6... account-name2
という形で登録され、Passkey でログインを試みると、選択画面が表示される。
Settings の Emails は、あくまで、自身が管理しているメールアドレス
- 既に github アカウントに紐付けられているメールアドレスは登録できない。
- Primary の他にアドレスを追加できるが、ここに登録すると、そのアドレスで github にアカウント登録できなくなる。
- verify email していなくても、何故か登録できなくなる。いたずら厳禁
verified 表示のために必要なこと(gpg 署名の場合)
- commit の Author の email が、github が本人と認識している正規のメールアドレスになっている
- email は、
- Primary のメールアドレス
- Settings → Emails で新規に追加したメールアドレス
(このアドレスで github からの email の検証を済ませておくことが必要) - アドレス非公開設定にしたときに表示される ID+USERNAME@users.noreply.github.com のようなアドレス
- email は、
- commit の Author の email が登録されている github アカウントで、その GPG 署名の公開鍵を GPG keys から登録済み
- git commit -S[keyid] で署名を付けたとき、現時点で github は発行者のメールアドレスは見ていない。commit の Author の email とそのキーID の鍵が登録されているかどうかをみている。つまり、発行者のメールアドレスは適当でもいい。
(今後仕様が変更される可能性はある。)
GPG 署名の登録は、そのメールアドレスのアカウントで行えばよく、submit 先の git repository で登録はいらない。
verified は、その commit と Author の紐付けを github が証明するだけで、その repository の owner が承認したとかではない。
git commit -S[keyid] で署名を付けたとき
同じキーID に複数の uid が紐付いているとき、
$ gpg -k
/home/user/.gnupg/pubring.kbx
-----------------------------
pub ed25519 2024-11-30 [SC]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
uid [ 不明 ] skyflare2001 <192401039+skyflare2001@users.noreply.github.com>
uid [ 究極 ] yubi-cmd-key <yubi-cmd-key@xxx>
uid [ 不明 ] skyflare2001 <skyflare2001@xxx>
sub cv25519 2024-11-30 [E]
sub ed25519 2024-11-30 [A]
-S[key-id] で署名を付けると、キーIDと発行者が埋め込まれる。
$ git commit -a -m test -Syubi-cmd-key@xxx
$ git log --show-signature
commit 528895964a4c40659110c209c404cb3244f4333a
gpg: 2025年01月26日 13時53分46秒 JSTに施された署名
gpg: EDDSA鍵xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxを使用
gpg: 発行者"yubi-cmd-key@xxx"
gpg: "skyflare2001 <192401039+skyflare2001@users.noreply.github.com>"からの正しい署名 [不明の]
gpg: 別名"yubi-cmd-key <yubi-cmd-key@xxx>" [究極]
gpg: 別名"skyflare2001 <skyflare2001@xxx>" [不明の]
Author: user <192401039+skyflare2001@users.noreply.github.com>
Date: Sun Jan 26 13:53:46 2025 +0900
test
-S[key-id] で、同じ鍵でも別の uid のメールアドレスにした場合は、発行者はそのアドレスになる。
$ git commit -a -m test -S192401039+skyflare2001@users.noreply.github.com
$ git log --show-signature
commit f7353bf7b8d12d4c23464945b3c42bba3c119ca0 (HEAD -> work)
gpg: 2025年01月26日 13時54分12秒 JSTに施された署名
gpg: EDDSA鍵xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxを使用
gpg: 発行者"192401039+skyflare2001@users.noreply.github.com"
gpg: "skyflare2001 <192401039+skyflare2001@users.noreply.github.com>"からの正しい署名 [不明の]
gpg: 別名"yubi-cmd-key <xxx>" [究極]
gpg: 別名"skyflare2001 <xxx>" [不明の]
Author: user <192401039+skyflare2001@users.noreply.github.com>
Date: Sun Jan 26 13:54:12 2025 +0900
test
以下の部分は、自身の $HOME/.gnupg の鍵情報に基づいていて、commit に埋め込まれているわけではない。
そのため、uid を追加したら、commit に変更がなくても、git log –show-signature で別名が増えた状態になる。
gpg: "skyflare2001 <192401039+skyflare2001@users.noreply.github.com>"からの正しい署名 [不明の]
gpg: 別名"yubi-cmd-key <xxx>" [究極]
gpg: 別名"skyflare2001 <xxx>" [不明の]
ykman fido credentials list の出力フォーマットは、
<relying_party_identifier(RPID)> <credential_id> <user_name>
github の場合は、
に github.com が入り、user_name に github のユーザ名が入っている。(恐らく、ログインするユーザ名リストはここから取っている。RPID
が github.com なものをリストしている。)RPID
同じアカウントで、Passkey の登録を一度消して、もう一度登録し直しても、
は同じだった。credential_id
同じアカウントに、複数の Passkey を登録した場合も、それぞれの鍵に登録される
は同じになっていた。credential_id
(google account の passkey も、複数の鍵に FIDO2 の登録をしたとき、アカウントが同じ場合は
が同じになる。)credential_id