Open8
GPG署名
GPG署名とは何か?
Gitコミットが本人のものであると署名する方法で、
以下が、偽装の実例も交えて必要性がよくわかります。
Mac で GPG署名をしようと思うと、ツールがインストールされていなくて、 Homebrew でインストールできます。
brew install gpg pinentry-mac
下記の Zenn スクラップを参考にしました。
Homebrew は最近 4.0 がリリースされたので、ついでに upgrade しておきます。
brew update
brew upgrade
% brew -v
Homebrew 4.0.3
Homebrew/homebrew-core (git revision 4e8e7f7d631; last commit 2023-02-21)
Homebrew/homebrew-cask (git revision 019c7e7c7d; last commit 2023-02-21)
Mac での GPG署名セットアップは以下の記事が詳しかったです。
インストールしたツールのバージョン確認
% gpg --version
gpg (GnuPG) 2.4.0
libgcrypt 1.10.1
Copyright (C) 2021 Free Software Foundation, Inc.
License GNU GPL-3.0-or-later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
% pinentry --version
pinentry-curses (pinentry) 1.2.1
Copyright (C) 2016 g10 Code GmbH
License GPLv2+: GNU GPL version 2 or later <https://www.gnu.org/licenses/>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
以下は、記事を参考にセットアップしたコマンドログ
gpg --full-gen-key
key_id
は生成結果の sec
の暗号方式の /
以下の文字列です。
gpg --armor --export {key_id} | pbcopy
ペーストボードにコピーした内容を GitHub GPG として登録し、
Git config を設定して完了です。
git config --global user.signingkey {key_id}
git config --global commit.gpgsign true
実際のコミットがGPG署名されているか確認する
git log --show-signature -1
gpg: Good signature from ...
と表示されていれば OK( ... の部分には、鍵作成時に入力した名前とメールアドレスが表示されます)
未署名だと、 gpg:
の部分が表示されません。
途中誤ったキーを生成した場合などキーを削除する手順は下記を参考
別の環境で 2.4.3 で構築すると、パスフレーズの入力を省略できなかった。
2.4.0 から 2.4.3 の間で省略不可になった?