上 git-secret:在 Git 存储库中加密和存储密钥( 二 )

可以通过以下方式导入私钥:
path="secret.gpg"gpg --import "$path"得到以下输出:
$ path="secret.gpg"$ gpg --import "$path"gpg: key E1E734E00B611C26: "Pascal Landau <pascal.landau@example.com>" not changedgpg: key E1E734E00B611C26: secret key importedgpg: Total number processed: 1gpg: unchanged: 1gpg: secret keys read: 1gpg: secret keys unchanged: 1注意:如果secret key需要密码,这里会提示输入密码 。我们可以使用以下方法绕过提示--batch --yes --pinentry-mode loopback
path="secret.gpg"gpg --import --batch --yes --pinentry-mode loopback "$path"目前还不需要提供密码 , 但需要在稍后尝试解密文件时提供 。
导出、列出和导入gpg公钥 , 可以通过以下方式导出public.gpg
email="pascal.landau@example.com"path="public.gpg"gpg --armor --export "$email" > "$path"导出如下:
-----BEGIN PGP PUBLIC KEY BLOCK-----mQENBF7VVBwBCADo9un+SySu/InHSkPDpFVKuZXg/s4BbZmqFtYjvUUSoRAeSejvG21nwttQGut+F+GdpDJL6W4pmLS31Kxpt6LCAxhID+PRYiJQ4k3inJfeUx7Ws339...3LLbK7Qxz0cV12K7B+n2ei466QAYXo03a7WlsPWn0JTFCsHoCOphjaVsncIcHxNZt7eK644nWDn7j52HsRi+wcWsZ9mjkUgZLtyMPJNB5qlKQ18QgVdEAhuZxT3SieoBPd+tZikhu3BqyIifmLnxOJOjOIhbQrgFiblvzU1iOUOTOcSIB+7A=g0hF-----END PGP PUBLIC KEY BLOCK-----通过以下方式列出所有公钥:
gpg --list-keys输出:
$ gpg --list-keys/root/.gnupg/pubring.kbx------------------------pub rsa2048 2022-03-27 [SCEA]74082D81525723F5BF5B2099E1E734E00B611C26uid [ultimate] Pascal Landau <pascal.landau@example.com>sub rsa2048 2022-03-27 [SEA]通过以下方式以与私钥相同的方式导入公钥:
path="public.gpg"gpg --import "$path"例如:
$ gpg --import /var/www/app/public.gpggpg: key E1E734E00B611C26: "Pascal Landau <pascal.landau@example.com>" not changedgpg: Total number processed: 1gpg: unchanged: 1git-secretgit-secret的官方网站可以找到详细介绍该工具的内容 。git-secret允许将某些文件声明为“secret”并通过 gpg 加密 。然后可以将加密的文件直接安全地存储在 Git 存储库中,并在需要时进行解密 。本文使用 git-secret v0.4.0
$ git secret --version0.4.0git-secret 安装Alpine 的安装说明如下:
sh -c "echo 'https://gitsecret.jfrog.io/artifactory/git-secret-apk/all/main'" >> /etc/apk/repositorieswget -O /etc/apk/keys/git-secret-apk.rsa.pub 'https://gitsecret.jfrog.io/artifactory/api/security/keypair/public/repositories/git-secret-apk'apk add --update --no-cache git-secret.docker/images/php/base/Dockerfile 进行更新:
# File: .docker/images/php/base/Dockerfile# install git-secret# @see https://git-secret.io/installation#alpineADD https://gitsecret.jfrog.io/artifactory/api/security/keypair/public/repositories/git-secret-apk /etc/apk/keys/git-secret-apk.rsa.pubRUN echo "https://gitsecret.jfrog.io/artifactory/git-secret-apk/all/main" >> /etc/apk/repositories && \apk add --update --no-cache \bash \git-secret \gnupg \make \#...git-secret 用法初始化 git-secretgit-secret 通过在 Git 存储库的根目录中运行的以下命令进行初始化 。
git secret init$ git secret initgit-secret: init created: '/var/www/app/.gitsecret/'只需这样操作一次,稍后会把文件夹提交到 Git,将包含以下文件:
$ git status | grep ".gitsecret"new file: .gitsecret/keys/pubring.kbxnew file: .gitsecret/keys/pubring.kbx~new file: .gitsecret/keys/trustdb.gpgnew file: .gitsecret/paths/mapping.cfgpubring.kbx~文件(带有波浪号~)只是一个临时文件,可以安全地被 git 忽略 。
git-secret Directory 和 gpg-agent Socket要 git-secret 在主机系统和 Docker 之间共享的目录中使用,还需要运行以下命令:
tee .gitsecret/keys/S.gpg-agent <<EOF%Assuan%socket=/tmp/S.gpg-agentEOFtee .gitsecret/keys/S.gpg-agent.ssh <<EOF%Assuan%socket=/tmp/S.gpg-agent.sshEOFtee .gitsecret/keys/gpg-agent.conf <<EOFextra-socket /tmp/S.gpg-agent.extrabrowser-socket /tmp/S.gpg-agent.browserEOF这一步很必要,因为 git-secret 在主机系统和 Docker 容器之间共享代码库的设置中使用时存在问题,具体如下: