apt-get无法验证以下签名,因为公钥不可用

时间:2012-04-23 13:23:37

标签: debian gnupg apt-get

我已经创建了自己的Debian存储库并遇到了这个问题。

我知道

  • --ignore-release-gpg

  • gpg --keyserver pgp.mit.edu --recv-keys xxxxxxxxx
  • gpg --armor --export xxxxxxxxx | apt-key add -

两个问题:

  1. 为什么apt-get不会自动从在线存储库导入这个公钥?
  2. 为什么我没有在其他存储库中看到此消息?

1 个答案:

答案 0 :(得分:1)

回答#1:它的设计是一种安全机制。 APT不是人类,不知道信任什么或信任谁。只能在您信任的人的密钥环中导入密钥。 GPG验证可防止对包内容的中间人攻击,并验证包的完整性是否与上载到存档/存储库时的状态相同。这样,即使官方镜像上的管理员也无法在没有注意到的情况下篡改文件。 另请参阅this question

和#2:在安装时安装了一些密钥。 Debian存档和Debian开发人员的主要密钥位于包debian-keyring中,并标记为可信,可与apt一起使用。

回到您的目标 - 维护您自己的Debian软件包存储库,而不会出现这些错误。最好的解决方案是签署存档中的所有包,并让存储库的用户安装您的公钥。这通常是如何工作的,例如参见VirtualBox.org如何处理这个问题。

一些随机陷阱:添加新密钥后,不要忘记运行apt-get update(或aptitude update)。

如果您正在使用Ubuntu并构建免费软件,请考虑使用PPA。 Ubuntu的PPA(个人包存档)带有简洁的用户友好脚本,用于安装存储库以及用于验证的GPG密钥。 (apt-add-repository ppa:my-ppa/myarchive

有些网站提到如何通过在其配置中设置APT::Get::AllowUnauthenticated yes;来禁用APT验证。我真的不建议这样做,因为它会影响所有存储库。