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

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

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

答案1

钥匙可在ubuntu-keyring包裹。因此,与任何 Ubuntu 软件包一样,您可以从发射台,它确实提供了 HTTPS(选择合适的版本并根据需要下载 tarball 或 deb 文件)。


事实上,你可以让 GnuPG2 通过 HKPS(带 SSL 的 HKP)导入密钥,这样就可以--recv-keys安全地进行导入,但这个过程有点烦人。要使用 HKPS,我们需要:

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

HKPS 和 dirmngr

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

首先,让我们创建一个符号链接,/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

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

答案2

我建议你使用“gpg --recv-keys”,apt 将确认密钥

apt 如何使用 Release.gpg

安全 apt 在下载 Release 文件时始终会下载 Release.gpg 文件,如果无法下载 Release.gpg,或者签名不正确,它会发出警告,并指出 Release 文件指向的 Packages 文件以及其中列出的所有软件包均来自不受信任的来源。apt-get 更新期间的情况如下:

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

http://wiki.debian.org/SecureApt

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

答案3

是的:Ubuntu 的密钥可以在https://keys.openpgp.org

这是我编写的脚本,用于自动通过 HTTPS 导入密钥。它之所以有效,是因为 openpgp 的 HTTPS 路径是可预测的,并且仅因密钥指纹而异。

为了使脚本适应您自己的目的,只需设置变量PATHSCRIPTS并将脚本内的 Here-Doc 中的 (3) 个样本键印替换为https://keys.openpgp.org您希望导入的 Ubuntu 键(或在 上找到的任何键)的键印。

#!/bin/bash

PATHSCRIPTS='/home/REPLACEWITHYOURUSERNAME'

# Create text file using a Here-Doc containing Key Fingerprints of keys to import into keyring:

cat <<EOF> $PATHSCRIPTS/Key-fingerprints-list.txt
AEB042FFD73BAA7545EDA021343A2DF613C5E7F8
7AFAF20259E69236E43EEF521F45D0F6E89F27A6
704FCD2556C40AF8F2FBD8E2E5A1DE67F98FA66F
EOF

# Read the text file we created into an array
readarray arrayKeyFingerprints < $PATHSCRIPTS/Key-fingerprints-list.txt

# Loop through the array adding each key in turn by its fingerprint from keys.openpgp.org:
for i in ${arrayKeyFingerprints[@]}; do
    curl https://keys.openpgp.org/vks/v1/by-fingerprint/$i | gpg --import
done

上述脚本的保存和执行结果如下test.sh所示:

pi@pi4-ap1:~ $ ./test.sh 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
100  3212  100  3212    0     0   7629      0 --:--:-- --:--:-- --:--:--  7629
gpg: /home/pi/.gnupg/trustdb.gpg: trustdb created
gpg: key 343A2DF613C5E7F8: public key "Terrence Houlahan (I'm the former NYPD cop living in the UK.  This is my only *personal* key.  Trust no others.) <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
100  3220  100  3220    0     0  18720      0 --:--:-- --:--:-- --:--:-- 18612
gpg: key 1F45D0F6E89F27A6: public key "Terrence Houlahan (Terrence Houlahan Linux & Network Engineer) <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
100  3252  100  3252    0     0  19473      0 --:--:-- --:--:-- --:--:-- 19473
gpg: key E5A1DE67F98FA66F: public key "Terrence Houlahan (Open-IPcamera Project Developer Key Terrence Houlahan) <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1

相关内容