Как безопасно скачать и проверить gpg исходный пакет Debian?

Мне нужны специальные (исходные или двоичные) пакеты из Debian.

Можно ли загрузить пакет с помощью apt-get?

Как добавить репозиторий Debian в мой sources.list, чтобы он использовался только в каждом конкретном случае? Не портя мою систему, используя весь репозиторий Debian?

Как получить ключ gpg для репозитория Debian, чтобы убедиться, что пакет был подписан архивом Debian?

(Пожалуйста, не Не говорите мне, что система может сломаться. Я знаю об этом и мне наплевать, потому что я могу легко восстановить снимок виртуальной машины.)

13
задан 14 March 2013 в 08:12

1 ответ

Есть несколько вопросов, на которые я отвечу индивидуально:

Как загрузить (а не установить) отдельный двоичный пакет?

apt-get имеет возможность только скачать пакет:

-d  Download only - do NOT install or unpack archives

Вы найдете загруженный пакет в /var/cache/apt/archives/. В этом случае вам нужно будет добавить новую конфигурацию списка источников в apt.

Как загрузить отдельный пакет с исходным кодом?

apt-get source <package>

или когда вы знаете местоположение файла .dsc:

dget http://http.debian.net/debian/pool/main/k/knot/knot_1.2.0~rc3-1.dsc

Оба подхода проверяют подпись на файлах

Как закрепить sources.list aka Как мне не испортить мою установку?

Вы уже указали на страницу базового описания для APT Pinning , и я хотел бы только добавить, что вы, вероятно, хотите прочитать справочную страницу apt_preferences , в которой также есть хорошие примеры для выполнения необходимых задач. Особенно смотрите раздел «Отслеживание стабильности» в ПРИМЕРАХ, поскольку он описывает что-то очень близкое к вашим потребностям:

Есть полезная команда при игре с несколькими источниками и APT Pinning:

# apt-cache policy knot
knot:
  Installed: 1.1.3-1~bpo60+1
  Candidate: 1.2.0~rc3-1~bpo60+1
  Version table:
     1.2.0~rc3-1~bpo60+1 0
        500 http://deb.knot-dns.cz/debian/ squeeze/main amd64 Packages
 *** 1.1.3-1~bpo60+1 0
        100 /var/lib/dpkg/status
     1.0.5-1~bpo60+1 0
        500 http://ppa.sury.org/debian/ squeeze/main amd64 Packages

This показывает, что установлена ​​версия 1.1.3-1 ~ bpo60 + 1, а кандидат - 1.2.0 ~ rc3-1 ~ bpo60 + 1, которая будет установлена ​​в следующем apt-get upgrade. Также есть более старая версия, доступная из еще одного хранилища.

Как скачать ключ архива Debian?

Ключ архива Debian опубликован на ftp-master . Вам нужно будет импортировать ключ в ваше кольцо ключей gpg:

$ gpg --import archive-key-6.0.asc 
gpg: key 473041FA: public key "Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   9  signed:  31  trust: 0-, 0q, 0n, 0m, 0f, 9u
gpg: depth: 1  valid:  31  signed:  38  trust: 25-, 0q, 0n, 1m, 5f, 0u
gpg: depth: 2  valid:  21  signed:  31  trust: 19-, 0q, 0n, 0m, 2f, 0u
gpg: depth: 3  valid:   3  signed:  12  trust: 2-, 0q, 0n, 0m, 1f, 0u
gpg: depth: 4  valid:   1  signed:   8  trust: 1-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2013-09-22

Затем вам нужно будет проверить его подписи:

$ gpg --list-sig 473041FA
pub   4096R/473041FA 2010-08-27 [expires: 2018-03-05]
uid                  Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>
sig 3        473041FA 2010-08-27  Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>
sig          7E7B8AC9 2010-08-27  Joerg Jaspert <joerg@debian.org>
sig     P    B12525C4 2010-08-27  [User ID not found]
sig          D0EC0723 2010-08-27  [User ID not found]
sig          8AEA8FEE 2010-08-27  [User ID not found]
sig          A3AE44A4 2010-08-28  [User ID not found]
sig          00D8CD16 2010-08-28  Alexander Reichle-Schmehl <alexander@reichle.schmehl.info>
sig          CD15A883 2010-08-28  [User ID not found]
sig          672C8B12 2010-08-28  [User ID not found]
sig 2        C4CF8EC3 2010-08-28  [User ID not found]
sig 2        D628A5CA 2010-08-28  [User ID not found]

и отследить отдельные ключи GPG для разработчиков Debian либо отслеживая это вручную, или Fe проверка в проекте PGP Key Statistics . И если между вашим ключом PGP / GPG и архивом ключей Debian нет цепочки, вам придется совершить прыжок веры в какой-то момент времени.

Как вручную загрузить и проверить отдельные пакеты

Таким образом, другой подход более сложен, поскольку пакеты deb подписываются не индивидуально, а подписывается только файл Release. Таким образом, вам нужно будет загрузить и проверить подпись на файлах Release и Packages вместе с отдельным пакетом.

Я добавлю пример, который будет более понятным.

Представьте, что вы хотите загрузить пакет Debian для Knot DNS из , это официальный PPA для Ubuntu с точной архитектурой amd64.

Вам нужно будет просмотреть каталоги и найти эти файлы:

wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/Release
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/Release.gpg
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/main/binary-amd64/Packages
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/pool/main/k/knot/knot_1.2.0~rc3-1~precise+1_amd64.deb

Следующим шагом будет проверка подписи в файле Release:

$ gpg --verify Release.gpg Release
gpg: Signature made Fri 01 Mar 2013 07:14:38 PM CET using RSA key ID F9C59A45
gpg: Good signature from "Launchpad Datové schránky"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 5246 3488 670E 69A0 9200  7C24 F233 1238 F9C5 9A45

Конечно, вам необходимо проверить ключ другими способами (например, ключом сопровождения Debian / Ubuntu, проверить его с панели запуска и т. Д. И т. Д.)

Когда вы проверили правильную подпись на [ 1117] файл, вы можете перейти к следующему шагу - проверка файла пакета.

sha256sum Packages
c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad  Packages
$ grep c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad Release
 c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad             3379 main/binary-amd64/Packages

Как видите, подпись находится в подписанном файле Release, поэтому мы проверили целостность файла Packages, вычислив и сравнив его отпечаток SHA-256.

Последний шаг похож. Вам необходимо вычислить и сравнить отпечаток индивидуального пакета:

$ sha1sum knot_1.2.0~rc3-1~precise+1_amd64.deb 
8b34078e9bfef7aa818b2f926a28838b0ede9f43  knot_1.2.0~rc3-1~precise+1_amd64.deb
$ grep -A 13 "Package: knot$" Packages | grep "^SHA1: "
SHA1: 8b34078e9bfef7aa818b2f926a28838b0ede9f43

На данный момент мы надежно приковали пакет к подписанному файлу Release. Поэтому, если вы верите подписи в файле Release, вы можете быть уверены, что пакет был загружен без изменений.

Вы можете прочитать больше в статье Secure APT на вики Debian.

0
ответ дан 14 March 2013 в 08:12

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

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