Я пишу программу, которая должна загружать ключи GPG для различных дистрибутивов для автоматической установки. Чтобы сделать это безопасно и автоматически, мне нужно скачать ключ через HTTPS, что означает, что «gpg --recv-keys» не вариант. Другие дистрибутивы (например, Fedora) размещают свои ключи на своих веб-сайтах через HTTPS (например, https://fedoraproject.org/static/E8E40FDE.txt ), но я не могу найти файл ключей Ubuntu в любом месте на ubuntu.com. Кто-нибудь знает, где я могу получить его через HTTPS?
Ключи доступны в ubuntu-keyring
пакет. Так, как с любым пакетом Ubuntu, можно загрузить его с Панели запуска, которая действительно обеспечивает, HTTPS (выберите подходящий выпуск и загрузите tarballs или deb файлы по мере необходимости).
Как это происходит, можно заставить GnuPG2 импортировать ключи по HKPS (HKP с SSL), таким образом, возможно --recv-keys
надежно, но процесс является немного раздражающим. Для использования HKPS мы должны:
dirmngr
использовать HKPS keyserverdirmngr
где Сертификаты CA gpg2
вместо gpg
- apt-key
вызовы команды gpg
, и gpg
кажется, не поддерживает HKPS (во всяком случае, он пытается выполниться /usr/lib/gnupg/gpgkeys_hkp
который перестал работать с ошибкой неподдерживаемого протокола),sudo apt-key add
Идеально, мы, как предполагается, используем gpgconf
установить параметры конфигурации для dirmngr
и gpg2
. Но 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
С 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
Yay!
Другой простой шаг:
$ 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
Эти шаги не трудно автоматизировать.
Я предлагаю, чтобы Вы использовали ""gpg - recv-ключи", склонный затем подтвердит ключ
Как способное использование Release.gpg
Безопасная Кв. всегда загружает файлы Release.gpg, когда она загружает Файлы версии, и если она не может загрузить Release.gpg, или если подпись будет плоха, то она будет жаловаться и обратит внимание, что файлы Пакетов, на которые Файл версии указывает на, и все пакеты, перечисленные там, из недоверяемого источника. Вот то, как это смотрит во время Кв. - получают обновление:
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
Да: ключ Ubuntu может быть найден по телефону https://keys.openpgp.org
, Вот сценарий, который я записал для автоматизации ключей импорта через HTTPS. Это работает, потому что путь HTTPS openpgp предсказуем и только варьируется ключевым цифровым отпечатком.
Для адаптации сценария к собственным целям просто установите переменную PATHSCRIPTS
и замените (3) экземпляр keyprints в Здесь-документе в сценарии с теми из ключей Ubuntu (или любые ключи, найденные на https://keys.openpgp.org
), Вы хотите импортировать.
#!/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.) <terrence@houlahan.co.uk>" 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) <houlahan@F1Linux.com>" 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) <terrence.houlahan@open-ipcamera.net>" imported
gpg: Total number processed: 1
gpg: imported: 1