如何让 gpg 生成 GPG 密钥公共环而不是密钥箱?

Mat*_*one 5 apt gnupg

我正在尝试获取公钥并将其添加到/etc/apt/trusted.gpg.d/,但遇到不兼容问题。

我跑:

gpg --no-default-keyring --keyring /etc/apt/trusted.gpg.d/example.gpg --import file.asc

这有效。

但是当我使用apt-key list它时,它说密钥不兼容。

查看文件类型,我的example.gpg类型是GPG keybox database version 1,而其他 apt 键的类型是GPG key public ring

我如何gpg生成 aGPG key public ring而不是 a keybox

dhe*_*els 6

我知道这已经很旧了,但由于我花了一些时间寻找解决方案,所以我将分享它。

当谈到自动化时,GnuPG 一直是一个痛苦,而且似乎没有办法让它使用旧的密钥环 v4 格式。但是,可以通过重新导出密钥来完成。这里以 MariaDB 存储库为例,写了一段丑陋的俏皮话:

# cd /etc/apt/trusted.gpg.d/ && wget -q -O - https://mariadb.org/mariadb_release_signing_key.asc | \
  gpg --no-default-keyring --keyring=$(pwd)/mariadb.gpg --batch --import - && \
  gpg --no-default-keyring --keyring=$(pwd)/mariadb.gpg --batch --output $(pwd)/mariadb.gpg~ --export --yes && \
  mv $(pwd)/mariadb.gpg~ $(pwd)/mariadb.gpg; chmod 644 $(pwd)/mariadb.gpg
Run Code Online (Sandbox Code Playgroud)

apt-key使用及其选项可以更轻松地完成此--keyring操作(在 Debian Buster 10.7 上测试)。

$ wget -q -O - https://mariadb.org/mariadb_release_signing_key.asc | \
  sudo apt-key --keyring /etc/apt/trusted.gpg.d/mariadb.gpg add -
Run Code Online (Sandbox Code Playgroud)

如果您查看该apt-key脚本,您会发现类似于上面一行的内容(但可能更强大)。请注意,apt-key如果您使用后缀.asc而不是.gpg受信任的文件,则会抱怨并失败。这似乎是一个错误,可以通过touch文件的前一个来避免。