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

  • 本文关键字:钥匙 gpg 生成 密钥 GPG gnupg apt
  • 更新时间 :
  • 英文 :


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

我跑:

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

哪个有效。

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

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

如何让gpg生成GPG key public ring而不是keybox

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

当涉及到自动化并且似乎没有办法使其使用旧的密钥环 v4 格式时,GnuPG 一直是一个痛苦。 但是,可以通过重新导出密钥来完成。这里有一个丑陋的单行代码,以 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

这可以通过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 -

如果您查看apt-key脚本,您会发现类似于上面的单行代码(但可能更健壮(。 请注意,如果您使用后缀.asc而不是对受信任文件使用.gpgapt-key将抱怨并失败。这似乎是一个错误,可以通过文件上的先前touch来避免。

我最近也偶然发现了这个问题,在深入研究源代码后,我找到了几乎完美的解决方案。

您可以只用前缀指定密钥环格式,因此gnupg-ring:gnupg-kbx:。在您的情况下,命令将是:

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

最新更新