📘

コミットに対するSSH署名にGitHubが対応したそうなので設定してみた

2024/05/07に公開

はじめに

Qiitaで書いたものを移行してきた記事になります。

先日参加したセキュリティキャンプ全国大会でsigstoreの紹介があり、gitのcommitに対して署名を行いました。ただ、開発中ということもあってか僕の環境ではうまくいかず、かといってGPG鍵を新しく作ると鍵管理が面倒で放置していました。そんな中Twitterを徘徊していたらGitHubがSSH署名に対応するようになったことを知ったので早速試してみました!!

https://github.blog/changelog/2022-08-23-ssh-commit-verification-now-supported/

https://twitter.com/reimei_dev/status/1562313372330512385

準備

macだとxcode経由でgitをインストールしていることがあり、その場合バージョンの関係でSSHで署名できないことがあるので、brew経由でインストールしていきます。

$ git --version
git version 2.32.1 (Apple Git-133)

▼ brew経由でgitをインストール

$ brew update
$ brew install git
$ echo 'export PATH=/usr/local/bin:$PATH' >> ~/.zshrc
$ source ~/.zshrc
$ git --version
git version 2.37.2

▼ 署名を確認できるようにするためにSSH鍵の登録ページにアクセスして、鍵の名前、Key typeに Signing Key、公開鍵を設定
スクリーンショット 2022-08-24 22.08.25.png

設定

▼ 署名に使用する鍵を管理
ファイル名や場所はどこでもいいのですが、今回は ~/.config/git/allowed_signers に作ります

# ~/.config/git/allowed_signers
# コミットで使用するメールアドレス 公開鍵の中身
# ↓ 例)
hoge@example.local ssh-ed25519 AAAA.........

▼ 残りの設定等

$ ssh-add ~/.ssh/id_rsa
$ git config --global gpg.format ssh
$ git config --global user.signingKey '公開鍵の中身'
$ git config --global gpg.ssh.allowedSignersFile "$HOME/.config/git/allowed_signers"

# コミットする際に自動で署名を行うための設定
$ git config --global commit.gpgsign true

# テスト用のリポジトリでコミット&プッシュ
$ git commit -am "signature test"
$ git push

結果

プッシュしたリポジトリのコミット一覧を見てみると以下のように Verified の文字が表示されると思います。
スクリーンショット 2022-08-24 22.07.28.png

参考URL

http://calebhearth.com/sign-git-with-ssh

https://blog.dbrgn.ch/2021/11/16/git-ssh-signatures/

GitHubで編集を提案

Discussion