上 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 容器之間共享代碼庫的設置中使用時存在問題,具體如下: