如何找到为包存储库提供公共 GPG 密钥的 URL?

如何找到为包存储库提供公共 GPG 密钥的 URL?

当我安装[email protected][email protected]在我的 Debian Jessie docker 镜像中使用

apt-get install -y software-properties-common && \
add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe' && \
apt-get install -y mysql-server-5.6 mysql-client-5.6

我看到以下警告

W:GPG错误:http://archive.ubuntu.com可信版本:由于公钥不可用,无法验证以下签名:NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32

不确定是否手动添加密钥

  apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 && \
  apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

是一个稳定的解决方案。我在某处读到,当存储库更新时,GPG 密钥可能会更改(如果我错了,请纠正我)。还可以从包存储库 URL 安装 GPG 密钥,如下所示:

curl -sL http://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -

所以我有以下子问题:

  1. 所有需要密钥的软件包存储库是否都有提供公共 GPG 密钥的 URL?
  2. 这样的 URL 有什么格式吗?

答案1

您正尝试在 debian 上从 ubuntu 存储库安装软件包,但 Debian 没有 ubuntu 密钥。添加新存储库需要受信任的 gpg 密钥,以便对包进行身份验证。

只有第三部分存储库需要新的 gpg 密钥,或者在更换密钥的情况下。

add-apt-repository将添加一个新的存储库并添加 gpg 密钥。

man add-apt-repository

  In  the second form, ppa:<user>/<ppa-name> will be expanded to the full
   deb  line  of  the  PPA  and   added   into   a   new   file   in   the
   /etc/apt/sources.list.d/  directory.   The  GPG public key of the newly
   added PPA will also be downloaded and added to apt's keyring.

在 debian jessie 上,您不需要添加 Ubuntu 存储库,它可以通过安全存储库获得。

删除可信存储库,然后将以下行添加到您的/etc/apt/sources.list

deb http://security.debian.org/debian-security jessie/updates main 

然后运行:

sudo apt update
sudo apt install mysql-server-5.5

Debian:安全 apt

答案2

在这种情况下,你确实有一个稳定的答案。它在“官方”文档中引用(https://help.ubuntu.com/community/VerifyIsoHowto#Get_the_key

在您的情况下,您正在引用(由您)“信任”的密钥服务器 ( keyserver.ubuntu.com) 并通过特定 ID ( 40976EAF437D05B5& 3B4FE6ACC0B21F32) 请求密钥。通过这种方式检索密钥,Ubuntu 基础设施的管理员可以在无需您干预的情况下处理更新。使用密钥 ID 实际上是引用密钥本身的加密哈希。

唯一的可能的我要做的改进是使用“完整”密钥 ID,它允许更精确的检索,并且需要更坚定的攻击者。

应该注意的是,上面文档中命令的 gpg 版本用于将相同的密钥添加到你的 用户密钥环,以便您可以使用密钥进行验证。该apt-key命令将密钥添加到易于钥匙圈,以便系统可以使用密钥进行验证。

关于子问题:

所有需要密钥的软件包存储库是否都有提供公共 GPG 密钥的 URL?这样的 URL 有什么格式吗?

不是。并非所有存储库(deb/apt、rpm/yum/dnf)都通过特定的“众所周知”URL 发布其密钥。由于许多密钥检索机制都内置于相应的包管理系统中,因此由该工具决定。需要注意的是,在基于 RPM 的系统中,Yum 和 DNF 在存储库定义中指定了元数据,以便于管理员使用,但这不是使用要求,URI 路径也不是标准化的。

顺便说一句,这样做的过程可能会在未来得到批准,因为RFC 5785RFC 8615现在是“一件事”,但将是未来的改进。

相关内容