如何让apt-get源验证工作?


7

示例(使用Debian Wheezy):

sudo apt-get source hello

结果:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Need to get 705 kB of source archives.
Get:1 http://ftp.us.debian.org/debian/ testing/main hello 2.8-3 (dsc) [1287 B]
Get:2 http://ftp.us.debian.org/debian/ testing/main hello 2.8-3 (tar) [697 kB]
Get:3 http://ftp.us.debian.org/debian/ testing/main hello 2.8-3 (diff) [6598 B]                                                               
Fetched 705 kB in 8s (80.6 kB/s)                                                                                                              
gpgv: keyblock resource `/root/.gnupg/trustedkeys.gpg': file open error
gpgv: Signature made Wed Feb 13 10:30:20 2013 UTC using RSA key ID 9F1B8B32
gpgv: Can't check signature: public key not found
dpkg-source: warning: failed to verify signature on ./hello_2.8-3.dsc
dpkg-source: info: extracting hello in hello-2.8
dpkg-source: info: unpacking hello_2.8.orig.tar.gz
dpkg-source: info: unpacking hello_2.8-3.debian.tar.gz

已安装dpkg-dev和debian-keyring软件包。

我尝试以root身份运行apt-get source作为用户,事先使用“gpg --recv-keys 9F1B8B32”作为用户和root用户。没有任何帮助来验证下载的源代码。

如何摆脱这个“dpkg-source:警告:未能验证签名”警告?


尝试一下 gpg --keyserver keyring.debian.org --recv-keys 9F1B8B32
Angs

没有帮助...
user28464

使用apt-get source hello-debhelper为我工作,我是root dir的root用户。
ling

Answers:


9

apt-get install debian-keyring

安装所有debian开发人员密钥环。它会在那之后检查。


已安装dpkg-dev和debian-keyring软件包。用这些信息编辑了原始问题。
user28464

@ user28464这是最奇怪的,你可以试试“apt-get update; apt-get install --reinstall debian-keyring”吗?什么“ls -l / usr / share / keyrings”返回?
Matija Nalis

不幸的是,它必须阅读 apt-get install debian-keyring/sid 大部分时间工作。
Tino

1
这个(没有/ sid)在Debian Jessie上为我工作
JinnKo

1

它是 debian-keyring 你想要的( .dsc 正在检查的文件由维护者签名)但安装 debian-keyring 仍然留下一些管道要做 gpg 考虑开发人员密钥(自动考虑它们将是一堆蠕虫,这可能是为什么管道不是作为安装后的一部分完成的)。

如果是一次性的,请重新检查 .dsc 获取后使用:

gpg --keyring /usr/share/keyrings/debian-maintainers.gpg --verify *.dsc

如果您要抓住几个,请添加:

keyring /usr/share/keyrings/debian-maintainers.gpg

到你的 ~/.gnupg/gpg.conf;从那时起, gpg (和 gpgv )将考虑开发人员/维护者密钥进行签名验证。 (如果你是偏执狂,你可以使用 /usr/share/keyrings/debian-keyring.gpg 其中包括完整的开发人员但不包括维护者。)

这两种方法都不会使密钥被认为是有效的,但这可能就是你想要的 - 如果你获得了 debian-keyring 精心配置 apt-get / aptitude 检查包的签名,你可以合理地确信那里的密钥确实属于开发人员/维护人员。


不是吗 apt-get source 使用 dscverify 检查签名? squeeze 的联机帮助页 dscverify 名单 /usr/share/keyrings/debian-maintainers.gpg 作为搜索debian密钥环的地方之一。
x-yuri

0

这里缺少的重要细节是你需要钥匙圈 sid而不是来自的钥匙圈 stable因为只有sid的密钥环载有所有的开发者。请注意 /sid 在下一行:

apt-get install debian-keyring/sid

要得到 sid 你通常需要像下面这样的一行 /etc/apt/source.list

deb http://http.debian.net/debian/ sid main

(别忘了 apt-get update 然后。)

但要小心!如果 sid 坐在你的 sources.list 你的系统趋于变形 sid 违背你的意愿。为防止这种情况,请添加一行 /etc/apt/apt.conf 看起来像:

APT::Default-Release "stable"; 

(有很多其他方法可以预防 sid,这是我所知道的最简单的一个。)

笔记:

  • 找到了这个解决方案的线索 http://debian.distrosfaqs.org/debian-user/signature-of-wheezys-linux-source-package/
  • 在我发现这个之前,我偶然发现了数千页,告诉您只需从密钥服务器中获取丢失的密钥: 从来没有做过如此愚蠢的事情来验证签名! 如果MitM能够向您发送伪造的包裹,那么同一个包裹也能够向您发送密钥服务器的伪造答案。因此从钥匙服务器拉出的钥匙就是普通的蛇形油。 (在安全的背景下,相信“蛇形”是你可以做的最愚蠢的事情。)

0

从“gpgv:keyblock资源`/root/.gnupg/trustedkeys.gpg':文件打开错误”一行判断,你必须遇到 gpg 的错误 。到底 apt-get source 运行 gpg--no-option 开关。如果没有homedir,那会失败( ~/.gnupg )存在。可以用以下方法解决这个问题: gpg -k。更多细节 这里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.