Help us understand the problem. What is going on with this article?

リモートリポジトリの特定のファイルを暗号化しておく

More than 1 year has passed since last update.

git-cryptを使えば、ファイルを暗号化してコミットしてチェックアウト時に復号化するという処理を透過的に(自動で)行えます。暗号化するにはGPG鍵が必要です。クローン時の復号化には基本的にGPG鍵ではなく対称鍵symmetric keyというのを使います。

暗号化

セットアップ

git-crypt init

これを実行すると.git-crypt .git/git-cryptディレクトリが作成され、そこに暗号化・復号化のためのメタデータが入ります。このディレクトリは.gitignoreしてはいけません。

暗号化するファイルを指定する

echo '.secret filter=git-crypt diff=git-crypt' >> .gitattributes

以下のようになっていると思います。

.gitattributes
.secret filter=git-crypt diff=git-crypt

1つめのフィールド.secretの部分は、暗号化されるファイルの名前です。.gitignoreに書くときと同じように書けます。誤って.gitattributes.gitignoreなどのファイルを指定して暗号化してしまわないようにしてください。また、暗号化したいファイルと同時かそれよりも前に、そのファイルのエントリを追加した.gitattributesgit addしてください。そうでないとそのファイルは暗号化されません。

git add .gitattributes

暗号化に使う鍵を指定する

git-crypt add-gpg-user USER_ID

USER_IDの部分に、GPG鍵を特定できる文字列を入れます。フィンガープリントやメールアドレスなど、GPGのmanpageの "HOW TO SPECIFY A USER ID" にあるやり方で指定できます。

暗号化するファイルを追加する

echo 'hello, secret world!' > .secret
git add .secret

あとは普通にコミットしてプッシュすればOKです。おめでとうございます! 当該ファイルは暗号化されたのち送信されますし、ローカルでは生のまま扱えます。

復号化

基本的に自動で復号化されるので、ほとんど気にする必要はありません。特別な手順が必要になるのは、新たにクローンした時だけです。

秘密鍵を使う

git-crypt unlock

クローンしたリポジトリでこれを実行します。そのあとは、プルした時にいちいちアンロックする必要はありません。

対称鍵を使う

秘密鍵を持っていないマシンでも開発する場合や、共同開発者がいる場合などには、以下の手順が必要になります。

対称鍵を生成する

git-crypt export-key /path/to/key

GPGユーザ追加もしくはアンロックを行ったリポジトリでこのコマンドを実行し、生成されたファイルを別のマシンや共同開発者に送ってあげましょう。

対称鍵でアンロックする

git-crypt unlock /path/to/key

その他

  • アンロックされたリポジトリでは、秘密鍵がなくても:
    • 必要なときに自分で対称鍵を生成できるので、貰った対称鍵は削除しても問題ありません
    • 新たなファイルを暗号化して追加できます
  • TravisCIなどでテストする場合はどうするんでしょうか……
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした