GitLabで署名付きCommitを行う

私が将来いなくなったときに、自分が書いた意思表示の文書などについて 確かに私の意思であると証明しないといけない状況もあると思います。 個人で電子署名を出来るよう、お手軽にGPGのKeyペアを作成しました。
ついでにGitLabで署名付きCommitを行えるようにGPGを設定しました。
GPGの導入と設定
以下はMacでのGPGの導入と設定方法です。 HomebrewからGPGとPinentry-macをインストールしています。
$ brew install gpg pinentry-mac $ mkdir ~/.gnupg $ touch ~/.gnupg/gpg-agent.conf $ echo "pinentry-program /opt/homebrew/bin/pinentry-mac" > ~/.gnupg/gpg-agent.conf $ gpgconf --kill gpg-agent # 新規だとないと思いますが、一応Keyを確認しておきます。 # このコマンドで ~/.gnupg/pubring.kbx , ~/.gnupg/trustdb.gpgが作成される。 $ gpg --list-keys # Keyの作成 # 設定はすべてデフォルトで。 $ gpg --full-generate-key # 秘密鍵をエクスポートして大事に保管しておきましょう。 # 流出しないように注意が必要です。 $ gpg --export-secret-keys "Taro Yamada" > secret.gpg # 公開鍵はGitLabの設定で使うのでエクスポートしておきます。 $ gpg --amor --export "Taro Yamada" >public.gpg
ついでに、公開鍵サーバーに公開鍵をアップロードしておきましょう。
#公開鍵サーバーにアップロード $ gpg --send-key B2936782C2B7801B90E9020694EEDC12CA884526 #メールアドレスを紐付けておきます。 $ gpg --export taro@yamada.org | curl -T - https://keys.openpgp.org
最後のコマンドで示されたURLをブラウザで開くと、"Send Verification Email"認証ボタン がありますからボタンを押して認証メールを送信してメール上にあるリンクを 踏むと認証が完了します。
私の公開鍵はメールアドレスと紐付けられて 公開 されました。
GitへのGPGの設定
GitでGPGで署名を行うように設定しています。
GitLabへの公開鍵の設定
GitLabに先ほどエクスポートした公開鍵を設定します。
設定は、 User Settings > GPG Keys を開いて公開鍵をペーストします。

GitLabでのGPG Keyの設定
まとめ
上記の設定を行うと、Gitでのコミット時にGPGでの署名のために パスフレーズを聞いてくるようになります。
そして署名付きでGitLabにPushすると公開鍵で署名が確認されて、 リポジトリーに verifeid とマークが付くようになります。

GitLabで署名付きリポジトリーの例
(追記 4/15 16:15JST) Mailmateへの設定
ついでに Macのメールアプリ MailMate がOpenPGPを利用可能なので設定しました。
上記の手順でインストールしたGPGはMailMateが想定している パスと違っているようなので、シンボリックリンクを張ります。
MailMateの設定画面のSecurityタブで"OpenPGP"のチェックボックスをオンにします。するとCompose画面で以下のようなスイッチが操作できるようになり、署名と暗号化が可能となります。(暗号化には送信先の公開鍵を持っている必要があります。)
