代码托管 CODEARTS REPO-在Git客户端使用git-crypt传输敏感数据:在Windows中使用密钥对方式进行加密、解密

时间:2024-11-15 09:32:44

在Windows中使用密钥对方式进行加密、解密

  1. 下载并安装最新的Windows Git客户端,下载最新基于Windows的git-crypt,把下载到的exe文件放到Git安装目录下的“cmd”文件夹中。
  2. 执行如下命令,在本地生成密钥对。

    1. 打开“Git Bash”,并进入本地代码仓库。
    2. 执行如下命令,在Git代码仓库中创建“.git-crypt”文件夹,文件夹包含加密文件所需的密钥和配置文件。
      git-crypt init
    3. 执行如下命令,把密钥文件导出到C:/test目录并命名为KeyFile。
      git-crypt export-key /c/test/keyfile
    4. 执行完上述步骤,您可以到密钥导出的文件路径进行验证,确认是否已成功生成密钥。持有这个密钥文件的计算机,可以解密对应的加密文件。

  3. 执行如下命令,为代码仓库配置加密范围。

    1. 在仓库的根目录下新建一个名为“.gitattributes”的文件。
    2. 打开“.gitattributes”文件,设置加密范围,语法如下。
      文件名或文件范围 filter=git-crypt diff=git-crypt
      下面给出四个示例。
      FT/file01.txt filter=git-crypt diff=git-crypt   #将特定文件加密,这里加密的是FT文件夹下的file01.txt
      *.java filter=git-crypt diff=git-crypt   #将 .java类型文件加密
      G* filter=git-crypt diff=git-crypt       #将 文件名为 G 开头的文件加密
      ForTest/** filter=git-crypt diff=git-crypt #将 ForTest 文件夹下的文件加密 

    • 如果创建.gitattributes文件时提示“必须键入文件名”,可以将文件名填写成 “.gitattributes.”即可创建成功,如果使用Linux指令创建文件,则不会出现此问题。
    • 注意不要将.gitattributes保存成txt文件,否则配置会无效。

  4. 进行文件加密

    在仓库根目录打开Git bash,执行如下指令即可完成加密,加密后可看到目前文件的加密状态。

    git-crypt status

    加密执行后,在您的本地仓库仍能明文方式打开和编辑这些加密文件,这是因为您本地仓库有密钥存在。

    这时您可以使用add 、commit、push组合将仓库推送到代码托管仓库,此时加密文件将一同被推送。

    加密文件在代码托管仓库中将以加密二进制方式存储,无法直接查看。如果没有密钥,就算将其下载到本地,也无法解密。

    “git-crypt status”只会加密本次待提交的文件,对本次未发生修改的历史文件不会产生加密作用,Git会对此设定涉及的未加密文件做出提示(见上图中的Warning),如果想将仓库中的对应类型文件全部加密,请使用“git-crypt status -f”

    在让团队合作中 -f (强制执行)具有一定的风险,请谨慎使用。

  5. 进行文件解密

    1. 确认本机器Git安装路径下存在git-crypt文件。

    2. 将仓库从代码托管克隆到本地。
    3. 获取加密此仓库的密钥文件,并存储于本地计算机。

    4. 进入仓库目录,右键打开Git bash。
    5. 执行解密指令,执行后无回显,则为执行成功。
      git-crypt unlock /C/test/KeyFile     #请将 /C/test/KeyFile 更换为您实际的密钥存储路径

support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0048.html