如何用gpg检查发布软件的签名?

How to check the signature of release software with gpg?

我正在创建一个 docker 图片,我正在尝试验证我下载的 gosu

我用来构建我的 docker 图像的主机在网络代理后面,我问自己代理是否与我的问题有任何关系。我知道以前版本的 gpg 包含选项 --honor-http-proxy,它不再有效。

我写了一个 bash 脚本来了解 gpg 在脚本中的使用细节。我 运行 我的机器上的这个脚本只是为了尝试一下。我希望在我可以让它在我的本地机器上工作之后,我可以让它在 Dockerfile 中工作。

#!/bin/bash

set -ex

# Download
wget -O ~/dev/gosu/gosu "https://github.com/tianon/gosu/releases/download/1.10/gosu-amd64";
wget -O ~/dev/gosu/gosu.asc "https://github.com/tianon/gosu/releases/download/1.10/gosu-amd64.asc";

# verify the signature
export GNUPGHOME="$(mktemp -d)";
gpg --keyserver keyserver.ubuntu.com --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4;
gpg --batch --verify ~/dev/gosu/gosu/gosu.asc ~/dev/gosu/gosu;
rm -rf "$GNUPGHOME" ~/dev/gosu/gosu/gosu.asc;
chmod +x ~/dev/gosu/gosu;
# verify that the binary works
gosu nobody true;

目前 运行我的脚本导致以下错误:

+ gpg --batch --verify ~/dev/gosu/gosu/gosu.asc ~/dev/gosu/gosu
gpg: can't open '~/dev/gosu/gosu/gosu.asc': Not a directory
gpg: verify signatures failed: Not a directory

首先您将文件保存为 ~/dev/gosu/gosu.asc,但稍后您尝试将其用作 ~/dev/gosu/gosu/gosu.asc。我想一旦你删除了这个错误,它就会起作用。