GitLabで署名付きCommitを行う

カテゴリー:  Tech タグ:  git gitlab gpg
/images/programming.webp

私が将来いなくなったときに、自分が書いた意思表示の文書などについて 確かに私の意思であると証明しないといけない状況もあると思います。 個人で電子署名を出来るよう、お手軽に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で署名を行うように設定しています。

$ git config --global user.name "Taro Yamada"
$ git config --global user.email "taro@yamada.org"

# GPG関連設定
$ git config --global gpg.program "/opt/homebrew/bin/gpg"

# GPGの署名を行うキーの設定
$ git config --global user.signingkey "Taro Yamada"

# GPGでの署名を行うスイッチ
$ gpg config --global commit.gpgsign true

GitLabへの公開鍵の設定

GitLabに先ほどエクスポートした公開鍵を設定します。

設定は、 User Settings > GPG Keys を開いて公開鍵をペーストします。

GitLabでのGPG Keyの設定

GitLabでのGPG Keyの設定

まとめ

上記の設定を行うと、Gitでのコミット時にGPGでの署名のために パスフレーズを聞いてくるようになります。

そして署名付きでGitLabにPushすると公開鍵で署名が確認されて、 リポジトリーに verifeid とマークが付くようになります。

GitLabの署名付きリポジトリーの例

GitLabで署名付きリポジトリーの例

(追記 4/15 16:15JST) Mailmateへの設定

ついでに Macのメールアプリ MailMate がOpenPGPを利用可能なので設定しました。

上記の手順でインストールしたGPGはMailMateが想定している パスと違っているようなので、シンボリックリンクを張ります。

$ sudo ln -s /opt/homebrew/bin/gpg /usr/local/bin/gpg

MailMateの設定画面のSecurityタブで"OpenPGP"のチェックボックスをオンにします。するとCompose画面で以下のようなスイッチが操作できるようになり、署名と暗号化が可能となります。(暗号化には送信先の公開鍵を持っている必要があります。)

MailMateの署名と暗号化

コメント

Comments powered by Disqus