コミットに署名が求められるOSSにPRを送りたくて、Linuxマシンのローカル環境で gpg
署名付きコミットできるようにしてみたので、手順を残しておきます。
貢献したいOSSのREADME.mdやCONTRIBUTING.md等に sign your commit
のように記載がある場合にgpg
署名付きコミットできるように設定します。
gpg
署名付きコミットの場合、Github上では以下のように Verified
というバッジが表示されます。
前提
- Ubuntu 18.04 LTS Desktop
- GPA 0.9.10
インストール
gpa((GnuPG)インタフェース)とseahorse(GNOMEフロントエンド)をインストールします
$ sudo apt-get install gpa seahorse
GPGキーの生成
Githubの以下のドキュメントに従って、GPGキーを生成しました。
$ gpg --full-generate-key gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc. 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 (署名のみ) あなたの選択は? => そのままEnter(RSA と RSA (デフォルト)) RSA 鍵は 1024 から 4096 ビットの長さで可能です。 鍵長は? (3072) => 4096 鍵の有効期限を指定してください。 0 = 鍵は無期限 <n> = 鍵は n 日間で期限切れ <n>w = 鍵は n 週間で期限切れ <n>m = 鍵は n か月間で期限切れ <n>y = 鍵は n 年間で期限切れ 鍵の有効期間は? (0) => 設定したい有効期限を入力、"1y"で1年になる GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。 本名: 【Githubアカウント名:moritamori】 電子メール・アドレス: 【Githubに登録しているメールアドレス】 コメント:【なし】
完了するので gpg で作成した private key
リストを確認。
$ gpg --list-secret-keys --keyid-format LONG uid [ 究極 ] moritamori <xxxxxxxxxxxxxxxxxx@gmail.com> ssb rsa4096/<GPG-ID> 2021-02-11 [E]
確認した<GPG-ID>の箇所を控えて、以下を実行し、クリップボードに値をコピー。
$ gpg --armor --export <GPG-ID> | xsel --clipboard --input
xsel
は mac
の pbcopy
のようにパイプで渡される出力をクリップボードにコピーできるアプリ。
もし、インストールしていなければ入れておきます。
sudo apt-get install xsel
Githubに貼り付ける前にクリップボードの値が以下のようなテキストになっていることを確認。
-----BEGIN PGP PUBLIC KEY BLOCK----- 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 -----END PGP PUBLIC KEY BLOCK-----
GPG キーをGithubに登録
Githubの以下のドキュメントに従ってGPG キーを登録します。 docs.github.com
GPG署名を有効化
ローカル環境で、上記で生成した<GPG-ID>をgit configで設定。
$ git config --global commit.gpgsign true $ git config --global user.signingkey <GPG-ID>
以降は、 git commit
すれば自動的にコミットが著名されます。
GPG鍵を削除する時
gpg --list-secret-keys
でuidを確認します。
$ gpg --list-secret-keys --keyid-format LONG uid [ 究極 ] moritamori <xxxxxxxxxxx@gmail.com> ssb rsa4096/xxxxxxxxxxxxxxx 2021-02-11 [E]
gpg --delete-secret-keys
で削除
$ gpg --delete-secret-keys moritamori