目录

为什么需要git-crypt?

安装git-crypt

初始化git-crypt

 配置Git-Crypt

运行加解密命令

在软件开发过程中,经常需要在代码库中处理敏感信息,比如API密钥、密码或配置文件等。这些信息如果被未经授权的人访问,可能会导致安全漏洞或数据泄露。因此,保护这些敏感信息变得至关重要。本文将介绍如何使用git-crypt和GPG(GNU Privacy Guard)来加密Git代码库中的敏感信息。   

为什么需要git-crypt?

git-crypt是一个基于Git的加密工具,它允许在Git项目中透明地加密和解密文件。使用git-crypt,开发者可以在代码库中安全地存储敏感信息,而无需担心这些信息被未授权的人访问。git-crypt利用GPG密钥进行加密,确保只有拥有正确密钥的用户才能解密敏感信息

安装git-crypt

在大多数Linux发行版和macOS上,可以通过包管理器安装git-crypt:

Debian/Ubuntu: sudo apt-get install git-crypt macOS(使用Homebrew): brew install git-crypt Windows 

        windows PS 如果想使用Git-Crypt 可以到 Git-Crypt的github 项目Release页中下载,下载地址https://github.com/AGWA/git-crypt/releases/tag/0.7.0,下载x86_64 版本,然后可以直接放到 C:\Program Files\Git\cmd (目录必须包含在环境变量中) 目录下,就可以直接执行了。

安装完成后,你可以使用git-crypt --version来验证是否安装成功。

git-crypt --version

  

PS D:\projects\ecpcb\galaxy-core> git-crypt --version

git-crypt 0.7.0

初始化git-crypt

在你的Git项目根目录下,运行以下命令来初始化git-crypt:

git-crypt init

  

PS D:\projects\ecpcb\galaxy-core> git-crypt init

Generating key...

这个命令会在项目中创建一个git-crypt目录,在windows power shell 下面会生成.git\git-crypt\keys用于存储git-crypt的配置和密钥信息。如果你进入到.git\git-crypt\keys 目录中你可以看到默认的key文件,如下图示:

  

 配置Git-Crypt

然后在项目文件根目录下创建.gitattributes ,指定需要加密哪些文件。下面的配置为自动加解密.secrets 文件下的所有文件

# Do not edit this file. To specify the files to encrypt, create your own

# .gitattributes file in the directory where your files are.

* !filter !diff

.secrets/** filter=git-crypt diff=git-crypt

*.gpg binary

加密之前需要将对称加密的密匙导出到其他文件,以便于后面解密。

git-crypt export-key ../git-crypt-key

然后在根目录下创建.secrets文件夹,并创建一个passwd文件测试一下,如下图所示。

运行加解密命令

需要加密文件添加完毕之后,然后 运行 

git add . | git commit -m 'git-crypt test'

此时如果你push 到github 代码库就会发现文件被自动加密了。

点击view raw 会自动下载加密过的文件,可以打开看看其实是已经加密的文件了。

虽然push 到github 上已经是加密过的文件了,但本地代码当前状态还是未加密的状态,可以使用git-crypt lock 就会给本地的代码也加密了。如下图:

如果想看明文,可以使用如下命令解密成明文,参数是之前导出的密匙的位置。

git-crypt unlock ..\git-crypt-key

  结果如下图:

总的来说git-crypt是使用对称加密来加解密git仓库中的文件以隐藏代码库中的敏感信息。简单的项目可以直接通过共享密匙来达到日常的代码敏感信息的加解密。如果Team人数比较多,那么密匙就有可能被无意扩散出去,导致密匙泄露。后面会讲解如何结合GPG, 通过增加个人的GPG密匙来分发加密解密权限。

GPG加密与数字签名以及在Git 中使用GPG签名提交

使用Git-Crypt和GPG加密Git代码库中的敏感信息(二)

精彩文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。