Ubuntu的归档签名密钥是否可以通过HTTPS在某处获得?

我正在编写一个程序,需要下载各种发行版的GPG密钥才能进行无人值守的网络安装。 为了安全地以自动方式执行此操作,我需要通过HTTPS下载密钥,这意味着“gpg –recv-keys”不是一个选项。 其他发行版(例如,Fedora)通过HTTPS在他们的网站上提供密钥(例如, https : //fedoraproject.org/static/E8E40FDE.txt ),但我无法在ubuntu.com上的任何地方找到Ubuntu密钥文件。 有谁知道我可以通过HTTPS获取它?

我建议你使用“”gpg –recv-keys“,然后apt会确认密钥

如何使用Release.gpg

Secure apt在下载Release文件时总是下载Release.gpg文件,如果它无法下载Release.gpg,或者如果签名不好,它会抱怨,并会记下Release文件指向的Packages文件,以及其中列出的所有包都来自不受信任的来源。 以下是apt-get更新期间的外观:

W:GPG错误: http ://ftp.us.debian.org测试版本:由于公钥不可用,无法validation以下签名:NO_PUBKEY 010908312D230C5F

见http://wiki.debian.org/SecureApt

和http://wiki.debian.org/SecureApt#How_to_tell_if_the_key_is_safe

这些密钥在ubuntu-keyring包中提供 。 因此,与任何Ubuntu软件包一样,您可以从Launchpad下载它,它提供HTTPS(选择合适的版本并根据需要下载tarball或deb文件)。


碰巧,你可以让GnuPG2通过HKPS导入密钥(带有SSL的HKP),因此可以安全地--recv-keys ,但这个过程有点烦人。 要使用香港邮政局,我们需要:

  • 告诉dirmngr使用HKPS密钥服务器
  • 告诉dirmngr CA证书在哪里
  • 通过gpg2而不是gpg获取密钥 – apt-key命令调用gpg ,而gpg似乎不支持HKPS(无论如何,它试图执行/usr/lib/gnupg/gpgkeys_hkp ,它因协议错误而失败)
  • 导出密钥并使用sudo apt-key add导入它

香港邮政总局和dirmngr

理想情况下,我们应该使用gpgconfdirmngrgpg2设置配置选项。 但是gpgconf并不理解我们使用的一个选项, --hkp-cacert用于dirmngr 。 所以我们不妨手动完成所有操作。

首先,让我们创建一个指向/etc/ssl/certs/ca-certificates.crt的符号链接,因为dirmngr想要一个PEM扩展:

 ln -s /etc/ssl/certs/ca-certificates.crt ~/.ca-certs.pem 

编辑~/.gnupg/dirmngr.conf (必要时创建)并将以下两个选项添加到其中:

 keyserver hkps://keyserver.ubuntu.com hkp-cacert ~/.ca-certs.pem 

必要时杀死dirmngr:

 pkill dirmngr 

使用GnuPG2导入密钥

设置dirmngr选项后,这很简单:

 $ gpg2 --verbose --recv-keys 0xBA6932366A755776 gpg: no running Dirmngr - starting '/usr/bin/dirmngr' gpg: waiting for the dirmngr to come up ... (5s) gpg: connection to the dirmngr established gpg: data source: https://cassava.canonical.com:443 gpg: armor header: Version: SKS 1.1.6 gpg: armor header: Comment: Hostname: keyserver.ubuntu.com gpg: pub rsa4096/6A755776 2017-07-29 Launchpad PPA for deadsnakes gpg: key 6A755776: "Launchpad PPA for deadsnakes" not changed gpg: Total number processed: 1 gpg: unchanged: 1 

好极了!

添加密钥到apt

另一个简单步骤:

 $ gpg2 --export 0xBA6932366A755776 | sudo apt-key add OK 

或者,我们现在可以从用户密钥环中删除添加的密钥,因为它不太可能再次需要:

 $ gpg2 --delete-keys 0xBA6932366A755776 gpg (GnuPG) 2.1.11; Copyright (C) 2016 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pub rsa4096/6A755776 2017-07-29 Launchpad PPA for deadsnakes Delete this key from the keyring? (y/N) y 

这些步骤并不难实现自动化。