LoginSignup
45

More than 5 years have passed since last update.

macOS Sierraで、GitHubにGPG署名付きでコミットできるように設定する。

Last updated at Posted at 2016-10-07

一緒に仕事をしてる人のコミットの履歴に "Verified" って出ててかっこいいなーと思ったのでやってみました。

GitHubの公式なドキュメントは以下のURLです。

しかし、GitHubの公式なガイドを見ながらやっても 「You need a passphrase to unlock the secret key ...」 というエラーが出てうまくいきませんでした。

そこで、 @bmhatfield さんという方がGistで公開している内容を試したらうまくいきましたので、その方法を紹介します。

僕の環境は以下の通りです。

  • macOS Sierra
  • Homebrew 1.0.6
  • Git 2.10.1
  • gpg 2.0.30

いちど公式なガイド通りにやって見て、同じ現象にでくわしたらこの記事のやりかたを試す感じがいいと思います。

セットアップ方法

必要なライブラリをインストール

$ brew install gnupg gpg-agent pinentry-mac

GPG 署名を作成する

$ gpg --gen-key

このコマンドを実行するといくつかの項目の入力を求められます。

ここでは注意すべき項目だけ紹介します。

キーの長さ

GitHub では、4096を推奨していますので、4096と入力してエンターです。

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)

メールアドレス等

Real name: miya0001
Email address: miya@exmaple.com
Comment: GitHub             
You selected this USER-ID:
    "miya0001 (GitHub) <miya@exmaple.com>"

名前、Emailアドレス、コメントの入力が求められます。EmailアドレスはかならずGitHubに登録されているEmailアドレスを入力してください。

その他の項目は任意でいいようです。

パスフレーズの入力を求められますので、これは忘れないようにしましょう。

gitに署名を設定する

まず、以下のコマンドで、署名のリストを取得してください。

$ gpg --list-secret-keys --keyid-format LONG
/Users/miyauchi/.gnupg/secring.gpg
----------------------------------
sec   4096R/XXXXXXXXXXXXXXXX 2016-10-07
uid                          miya0001 (GitHub) <miya@example.com>
ssb   4096R/1234567890123456 2016-10-07

上の中の XXXXXXXXXXXXXXXX という部分が署名のIDです。これを以下のコマンドでGitに登録します。

$ git config --global user.signingkey XXXXXXXXXXXXXXXX

あと、gpg コマンドのパスを以下のコマンドで設定します。

$ git config --global gpg.program $(which gpg)

続けて、以下のコマンドで自動的に署名付きでコミットするように設定してください。

$ git config --global commit.gpgsign true

GitHubに署名の公開鍵を登録

以下のコマンドで公開鍵を取得してください。 XXXXXXXXXXXXXXXX の部分は署名のIDです。

$ gpg --armor --export XXXXXXXXXXXXXXXX

取得した公開鍵をコピーしてGitHubの以下のURLで登録してください。

gpgの設定

GitHubに書いてあるガイドではここまででなんとかなるみたいな感じだったのですが、最初に書いたようにパスワードを入れてよってエラーが出てしまってうまくいかなかったので、そのための設定を行います。

まず以下の二つのコマンドを連打してください。

$ curl https://gist.githubusercontent.com/bmhatfield/cc21ec0a3a2df963bffa3c1f884b676b/raw/893ab10dc8cd4d6c3cc4ce49bd010a20b54ba4e8/gpg.conf > ~/.gnupg/gpg.conf
$ curl https://gist.githubusercontent.com/bmhatfield/cc21ec0a3a2df963bffa3c1f884b676b/raw/893ab10dc8cd4d6c3cc4ce49bd010a20b54ba4e8/gpg-agent.conf > ~/.gnupg/gpg-agent.conf

次に、 ~/.bash_profile 等に以下のコードを追加してください。

これらのソースは冒頭に紹介した以下のURLにすべてあります。

初コミット

以上が完了したら適当に何かをコミットしてください。すると以下のようなプロンプトが出てパスワードの入力を求められます。

パスワードは、GPG署名を作成するときに入力したパスワードを入力してください。

「Save in Keychain」にチェックを入れると次回以降パスワードの入力を求められなくなります。

コミットしたらGitHubに git push してみましょう。コミットの履歴に以下のように「Verified」と表示されていたら成功です。

おまけ

ところで、署名付きで一度コミットした後でGitHubに登録した署名の公開鍵を削除したらどうなるのかな?と思って試して見ました。

あっ、なるほど。笑

僕はBotを使って定期的にアップデートしてるプロジェクトもあるんですが、そういうのと区別することもできそうですね。

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
45