Доступен ли где-нибудь ключ подписи архива Ubuntu через HTTPS?

Я пишу программу, которая должна загружать ключи GPG для различных дистрибутивов для автоматической установки. Чтобы сделать это безопасно и автоматически, мне нужно скачать ключ через HTTPS, что означает, что «gpg --recv-keys» не вариант. Другие дистрибутивы (например, Fedora) размещают свои ключи на своих веб-сайтах через HTTPS (например, https://fedoraproject.org/static/E8E40FDE.txt ), но я не могу найти файл ключей Ubuntu в любом месте на ubuntu.com. Кто-нибудь знает, где я могу получить его через HTTPS?

5
задан 15 November 2017 в 17:05

3 ответа

Ключи доступны в ubuntu-keyring пакет. Так, как с любым пакетом Ubuntu, можно загрузить его с Панели запуска, которая действительно обеспечивает, HTTPS (выберите подходящий выпуск и загрузите tarballs или deb файлы по мере необходимости).


Как это происходит, можно заставить GnuPG2 импортировать ключи по HKPS (HKP с SSL), таким образом, возможно --recv-keys надежно, но процесс является немного раздражающим. Для использования HKPS мы должны:

  • сказать dirmngr использовать HKPS keyserver
  • сказать dirmngr где Сертификаты CA
  • получите ключи через gpg2 вместо gpg - apt-key вызовы команды gpg, и gpg кажется, не поддерживает HKPS (во всяком случае, он пытается выполниться /usr/lib/gnupg/gpgkeys_hkp который перестал работать с ошибкой неподдерживаемого протокола),
  • экспортируйте ключ и импортируйте его с sudo apt-key add

HKPS и dirmngr

Идеально, мы, как предполагается, используем 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

Ключ импорта с 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

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

Эти шаги не трудно автоматизировать.

2
ответ дан 15 November 2017 в 17:05

Я предлагаю, чтобы Вы использовали ""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

1
ответ дан 15 November 2017 в 17:05

Да: ключ 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
0
ответ дан 11 October 2019 в 14:29

Другие вопросы по тегам:

Похожие вопросы: