使用 git-crypt 加解密 Git 中的文件
目录
git-crypt 是一个用于加密和解密文件的工具,可以与 Git 仓库无缝集成,允许用户安全地存储和共享敏感数据。
安装 git-crypt
❯ brew install git-crypt
初始化 git-crypt 并备份加密 key
❯ git-crypt init
Generating key...
❯ git-crypt export-key /Users/damonguo/Workspace/keys/git-crypt-v1.key
❯ diff .git/git-crypt/keys/default /Users/damonguo/Workspace/keys/git-crypt-v1.key
❯ echo "git-crypt/api.key filter=git-crypt diff=git-crypt" > .gitattributes
❯ git add .gitattributes
❯ git commit -m "feat: tell git-crypt to encrypt git-crypt/api.key"
❯ git push
创建测试文件
❯ mkdir git-crypt
❯ echo "This is some text" > git-crypt/file.txt
❯ echo "dummy value" > git-crypt/api.key
❯ git add git-crypt
❯ git commit -m "feat: add git-crypt demo files"
❯ git push
校验文件加解密状态
使用 git-crypt status
命令查看文件的服务端加解密状态
❯ git-crypt status git-crypt
encrypted: git-crypt/api.key
not encrypted: git-crypt/file.txt
通过 GitLab 网页端
查看文件的服务端加解密状态
通过 git-crypt lock/unlock
命令对文件 git-crypt/api.key
进行本地加解密
❯ git-crypt lock
❯ file git-crypt/api.key
git-crypt/api.key: data
❯ git-crypt unlock /Users/damonguo/Workspace/keys/git-crypt-v1.key
❯ file git-crypt/api.key
git-crypt/api.key: ASCII text
❯ cat git-crypt/api.key
dummy value
在团队中使用 git-crypt
以安全的方式与团队成员共享导出的加密 Key /Users/damonguo/Workspace/keys/git-crypt-v1.key
。
通知他们导入加密 Key 对 Git 仓库中的加密文件进行解密: git-crypt unlock /path/to/git-crypt-v1.key
。
更新 git-crypt 加密 key
创建一个新的 git-crypt 加密 Key
❯ git-crypt unlock /Users/damonguo/Workspace/keys/git-crypt-v1.key
❯ rm -rf .git/git-crypt/keys
❯ git-crypt init
Generating key...
❯ git-crypt export-key /Users/damonguo/Workspace/keys/git-crypt-v2.key
❯ diff .git/git-crypt/keys/default /Users/damonguo/Workspace/keys/git-crypt-v2.key
触发更新并应用新的 git-crypt 加密 key。
❯ echo "new dummy value" > git-crypt/api.key
❯ git add git-crypt/api.key
❯ git commit -m "feat: update api.key with new git-crypt encryption key"
❯ git push
以安全的方式与团队成员共享新的加密 Key /Users/damonguo/Workspace/keys/git-crypt-v2.key
。
通知他们暂停 git push 和 pull 等操作,先导入新的加密 Key: git-crypt unlock /path/to/git-crypt-v2.key
,然后再继续。