3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Commitに署名をしよう!!ーGPGの使い方ー

Last updated at Posted at 2022-12-07

みなさん、GitのCommitに署名使っていますか?気軽に使えるので、みなさんも登録してみましょう。

もしも署名されたコミットの場合は以下のように緑文字でVerified と記載されます。かっこいいですね。「なりすましをしていないよ!」ということを示しています。

スクリーンショット 2022-12-07 21.25.43.png

Githubのドキュメント

ざっくりとした手順

  1. 全体用の鍵を作る
  2. 署名用の鍵を付け加える
  3. Githubに公開鍵を登録する
  4. Gitにこの鍵を使うよとconfig --globalで伝える。
  5. Commitする!

詳細手順

全体用の鍵の作成

macの場合は以下のアプリケーションをインストールします
https://gpgtools.org/

上記のツールをインストールした状態で以下のコマンドを入力します。

$ gpg --full-generate-key

鍵の種類は(1) RSA と RSA (デフォルト)を選択
RSA鍵の長さは4096を選択1 その後以下のコマンドを入力すると以下のような記述がなされているかと思います

この時点でrsaxxx/AAAAAAAA 2222-00-00 [S]というような表記がある場合Githubに公開鍵を登録する部分まで飛ばしてしまっても問題ありません。

$ gpg --list-secret-keys --keyid-format=long
-------------------------------
pub   rsa4096/550D4A48 2022-12-07 [SC]
      01293870FAA94837AF26C7382007732
uid         [  究極  ] Hugami Hogeta <example@example.com>
sub   rsa4096/AA49243B 2022-12-07 [E]

署名用の鍵の作成

上記の場合Pubの鍵が「550D4A48」2であるので以下のようにコマンドを入力

$ gpg --edit-key 550D4A48
gpg> addkey


sec  rsa4096/550D4A48
     作成: 2022-12-07  有効期限: 無期限      利用法: SC  
     信用: 究極        有効性: 究極
ssb  rsa4096/AA49243B
     作成: 2022-12-07  有効期限: 無期限      利用法: E   
ssb  rsa4096/5D8AC5A
     作成: 2022-12-07  有効期限: 無期限      利用法: S   

今度は暗号化ようの鍵を生成するため(4) RSA (署名のみ)を選択肢鍵の長さは前回同様4096を選択。このようにすると、利用方法:S な署名用の鍵5D8AC5Aが生成されます。

gpg >quit
変更を保存しますか? (y/N) y

gpgのインターフェースはquitで抜けることが可能です。

公開鍵の登録

gpg --armor --export 550D4A48

-----BEGIN PGP PUBLIC KEY BLOCK-----
(中略)
-----END PGP PUBLIC KEY BLOCK-----

ここでのポイントはSではなくSCの鍵を登録することです。上記で鍵を付け加えたため、公開鍵には署名に対応する鍵も含まれています。
きちんと--BEGIN PGPから---END PGPまでコピーしておきましょう。Macの場合は以下のコマンドで同時にクリップボードが可能になります

gpg --armor --export 550D4A48 | pbcopy

これをGithubのSettings > SSH and GPG keys New GPG Keyボタンから登録することで鍵の登録が可能になります。

Gitに登録(グローバル)

git config --global gpg.program gpg
git config --global user.signingkey 5D8AC5A
git config --global commit.gpgsign true
git config --global tag.gpgsign true

あとはコンフィグをセットするだけです。ポイントとしては、user.signkey に登録するのは「署名鍵の」IDを使うという点です。

参考文献

https://qiita.com/kanatatsu64/items/85104644d1599c244f35
https://docs.github.com/ja/authentication/managing-commit-signature-verification/generating-a-new-gpg-key
https://gpgtools.org/


おまけ ー Discordの鍵流出対策が面白い話ー

GithubのPublicリポジトリにDiscordのトークンを一瞬流出させてしまったのですが、流出した瞬間にトークンが無効になりDMが飛ぶようなシステムまで作られているみたいです。

普通にすごい。
※トークンは流出しないようSecretで管理しましょう。

スクリーンショット 2022-12-07 22.07.55.png

iOS版アプリでもポップアップで教えてくれます。ヒェッ

IMG_7686.jpg

  1. Githubのドキュメントを見ると最低4096とあるので4096と選択しています。

  2. 上記のコマンドは今回説明用にそれっぽく書いた乱数です。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?