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

4

我试图将一个公钥添加到/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密钥公共环而不是keybox


请注意,apt-key已被弃用 - kynan
2个回答

4

我最近也遇到了这个问题,通过查看源代码后,我找到了非常完美的解决方案。

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

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


4
我知道这已经有些过时了,但因为我花了一些时间找到解决方案,所以我要分享一下。
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

使用 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来避免。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接