GitHub署名付きでコミットしてかっこつける

公開:2020/09/25
更新:2020/10/03
3 min読了の目安(約3400字TECH技術記事

署名とは

このようにVertifiedと書かれたコミットを見たことがありませんか?
Vertifiedされたコミット

かっこよ!!!

調べてみると公式のヘルプページにはこう書かれていました

GPG あるいは S/MIME を使って、タグやコミットにローカルで署名できます。 それらのタグやコミットは検証済みとして GitHub上でマークされ、他の人々がその変更が信頼できるソースから来たものと信頼できるようになります。

つまり、「これは信頼できるコミットだよ」って表現することができるということですね。(かっこつけるためではないようです)

ちなみにWEB版のGitHubからコミットすると自動的に署名されるらしいです。 ...WEB版のGitHub使ってコミットする人ってどれくらいいるのかな?

この署名にはGPGとS/MIMEの2種類があるそうです。今回はGPGを扱っていきます。もう1つのS/MIMEはどうやらOrganizationで使うものらしいです。

GPGを使い始める

GPGのインストール

Windowsの場合はGpg4win、mac OSの場合はGPGToolsを使います。
Linuxの場合は

$ sudo apt install gpg

でインストールできます。

個人的にはWindowsのかたもWSLを使ったほうが楽だと思ういます(任意!!!

ここからはWSLでやっていきます(大体同じなはず)

新しい鍵を作る

今回は2種類ペアの鍵が必要になります。

  1. このコードをコマンドプロンプト/ターミナルに入力し実行します

    $ gpg --full-generate-key
    
  2. 暗号化の方式を聞かれるのでそのままEnterを打ちます。

  3. 暗号の長さは4096ビット以上ではなければならないらしいですが、RSAの最長値は4096ビットのでそのまま4096と入力します。

  4. 鍵の有効期限を設定します。デフォルトの無期限で良いのでそのままエンターキーを押します。

  5. 内容を確認してくださいと聞かれるので、yと入力してEnterを押します。
    ここまでの流れはこんな感じです
    ここまでの流れ

  6. Realname:って聞かれてますけど普通にGitHubのID・メールアドレスを入力します。
    GitHubの情報を設定
    ちなみにコメントは何も書かずにEnterを押して大丈夫です。

  7. 修正する点がなければOと入力します。(IDを間違えた場合はN、メールアドレスを間違えたらEと入力します)

  8. パスワードを指定が求められるので、突破されないようなパスワードを指定します。
    パスワード打つ画面ハッカー感があって格好いい(中二病的思考)

  9. この画面が出たら成功です!
    成功!

確認・GitHub連携

$ gpg --list-secret-keys --keyid-format LONG

と打つと先ほど作成したキーが出てくるはずです。

gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
/home/appare/.gnupg/pubring.kbx
-------------------------------
sec   rsa4096/________ 2020-09-24 [SC]
      /////////////////////////////////
uid                 [ultimate] appare45 <mail@example.com>
ssb   rsa4096/****************** 2020-09-24 [E]

この図の_________の部分ををコピーしておきます。
(僕はコピーするところを間違えてめっちゃ時間をとられました)

$ gpg --armor --export ______________

として実行します。

すると、謎の文字列が出力されます。-----BEGIN PGP PUBLIC KEY BLOCK-----から-----END PGP PUBLIC KEY BLOCK-----の部分をコピーします。

GitHubの設定メニューからGPGキーを追加します。フィードに先ほどコピーした内容を貼り付けます。
GitHubの鍵の設定メニュー

$ test -r ~/.bash_profile && echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile
$ echo 'export GPG_TTY=$(tty)' >> ~/.profile

この2つのコマンドを実行します

これで設定は完了です。

コミット

かっこつけてコミットするには

$ git commit -S -m 'コミットメッセージ'

としてあげればOKです。

上手くいかないときは

人生すべてが上手くいくわけではないようです。
僕はこれをやったら上手くいきました。

$ echo "test" | gpg2 --clearsign

としてパスフレーズを入力すると上手くいきます

参考