LoginSignup
12
9

More than 3 years have passed since last update.

Gitのセットアップをする(強い SSH key を使う、 GPG key を使った署名付きコミットを行う)

Posted at

今まで RSA で適当に鍵を作ったりしていたが、もう少しセキュリティ面を考え、真面目に SSH key を作ったり、署名付きコミットをしてみようと思った。

強い SSH key を作る

RSA の 1024bit はよくないらしく、 2048bit も時間の問題で使えなくなりそうなので、ここは ECDSA や Ed25519 を使うことにしてみる。

各種Keyの作り方は下記が参考になった。

2017年版 SSH公開鍵認証で使用する秘密鍵ペアの作り方 - Qiita

圧倒的に意識が高いらしい、 ed25519 にして鍵を作ってみる。

ssh-keygen -t ed25519

なお、電子署名EdDSA(ed25519)の数的構造 - Qiita 等で理論を軽くおってみたが、難しいことはよくわからなかった。

ただ、古いサーバーに入ることに備えて RSA の鍵も作っておく。長さは 4096bit にして少しでも長くしておく。(自分が使う範囲だとこれくらいの長さでも大丈夫だが、もっと古いサーバーだとそうもいかなかったりするのかな?)

ssh-keygen -t rsa -b 4096

GPG鍵を使った署名付きコミットをする

GitHub で SSH key の他に PGP key が登録できるのだが、これが今までなぜ存在するのか実は知らなかった。

公式の記事を読んで機能を知った。About commit signature verification - GitHub Help

導入についてはこの記事が参考になった。

macOS Mojave で GnuPG の鍵を SSH の鍵として使う - Qiita

なお、導入にあたっては gpg コマンドが動く状態であることが重要っぽい。そのためのパッケージがどうこうみたいな問題はあるようだが、あまり躓くことなく導入できてしまったので何が最小構成なのかわかっていない。(一応、 gpg コマンド動く状態で、 Ubuntu で少し試してみたが、同じ手順で導入できている)

ただしバージョンはなるべく新しいほうが良いようだ。こちらの git(GitHub)でGPGを使った署名をおこなう - Qiita 記事も参考にしたが、なるべく新しいほうがいいんだなあ… ということを知った。(ただこの記事は RSA で進めていたので、もう少しいい感じのやつないかなーで上の macOS Mojave でやる記事を見つけた)

最後に下記を打ち込んで、

gpg --list-keys --with-keygrip <あなたのemailアドレス>

pubの直後にある部分を <keyのID> としてやると、 GPG キーが Export される。

gpg --armor --export <keyのID>

これを GitHub の PGP Key に貼り付ければ登録完了。

登録後はこんな感じに。

image.png

git commit を常に署名付きにする

git config --global commit.gpgsign true

で global な .gitconfig に設定を書き込んであげればOK。

push したら下記のように見えるはず。(しかし個人リポジトリだからといってコミットメッセージがひどい)

image.png

緑色の Verified がついていればOK。

まとめ

GPG key の存在とか、設定方法とか改めて提供されている機能を活用してみようと思うといろいろ学ばなければいけないことが多いなと感じた。

でもこれでこれは私のコミットです!!と堂々と言えるようになったのは良かったかな、と思う。バリバリ署名付きコミットをアピールするように進捗を出していきたい。

12
9
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
12
9