web-dev-qa-db-fra.com

Comment télécharger et vérifier en gpg un paquet source Debian en toute sécurité?

J'ai besoin de paquets spécifiques (source ou binaires) de Debian.

Puis-je télécharger le paquet en utilisant apt-get?

Comment puis-je ajouter le référentiel Debian à mon sources.list afin qu’il ne soit utilisé que cas par cas? Sans perturber mon système en utilisant tout le référentiel Debian?

Comment puis-je obtenir la clé gpg du référentiel Debian pour être sûr que le paquet a été signé par l'archive Debian?

(Merci de ne pas me dire que le système risque de tomber en panne. Je suis conscient de cela et je m'en fiche, car je peux facilement restaurer un instantané VM.)

13
James Mitch

Il y a plusieurs questions auxquelles je répondrai individuellement:

Comment télécharger (et ne pas installer) un package binaire individuel?

apt-get a une option pour télécharger le package uniquement:

-d  Download only - do NOT install or unpack archives

Vous trouverez le package téléchargé dans /var/cache/apt/archives/. Dans ce cas, vous devrez ajouter une nouvelle configuration de liste de sources à apt.

Comment télécharger un paquet source individuel?

apt-get source <package>

ou lorsque vous connaissez l'emplacement du fichier .dsc:

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

Les deux approches vérifient la signature sur les fichiers

Comment épingler le sources.list aka comment ne pas déranger mon installation?

Vous avez déjà indiqué la page de description de base pour APT Pinning , et je voudrais seulement ajouter que vous voulez probablement lire la page de manuel apt_preferences qui contient également de jolis exemples pour accomplir des tâches. vous avez besoin. Voir en particulier la section "Suivi de la stabilité" dans EXEMPLES, car elle décrit quelque chose de très proche de vos besoins:

Il y a une commande utile lorsque vous jouez avec plusieurs sources et 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

Cela montre que la version installée est 1.1.3-1 ~ bpo60 + 1 et que le candidat est 1.2.0 ~ rc3-1 ~ bpo60 + 1, il sera installé le prochain apt-get upgrade. Il existe également une version plus ancienne disponible à partir d'un autre référentiel.

Comment télécharger la clé de l'archive Debian?

La clé d'archive Debian est publiée sur ftp-master . Vous devrez importer la clé dans votre trousseau de clés gpg:

$ gpg --import archive-key-6.0.asc 
gpg: key 473041FA: public key "Debian Archive Automatic Signing Key (6.0/squeeze) <[email protected]>" 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

Ensuite, vous devrez vérifier ses signatures:

$ gpg --list-sig 473041FA
pub   4096R/473041FA 2010-08-27 [expires: 2018-03-05]
uid                  Debian Archive Automatic Signing Key (6.0/squeeze) <[email protected]>
sig 3        473041FA 2010-08-27  Debian Archive Automatic Signing Key (6.0/squeeze) <[email protected]>
sig          7E7B8AC9 2010-08-27  Joerg Jaspert <[email protected]>
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 <[email protected]>
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]

Et suivez les clés GPG individuelles pour les développeurs Debian, soit manuellement, soit p.e. vérification à Statistiques clés PGP projet. Et à moins qu'il y ait une chaîne de votre clé PGP/GPG dans l'archive de clés Debian, vous devrez faire un acte de foi à un moment donné.

Comment télécharger et vérifier des paquets individuels à la main

Donc, l’autre approche est plus compliquée, car les packages deb ne sont pas signés individuellement, mais seul le fichier Releaseest signé. Ainsi, vous devrez télécharger et vérifier la signature sur les fichiers Releaseet Packagesavec le package individuel.

Je vais ajouter un exemple qui sera plus clair.

Imaginez que vous vouliez télécharger le paquet Debian pour Knot DNS à partir de c'est un PPA officiel pour Ubuntu précis sur l'architecture AMD64.

Vous devrez cliquer sur les répertoires et trouver ces fichiers:

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

La prochaine étape consisterait à vérifier la signature sur le fichier Releasename__:

$ 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

Bien sûr, vous devrez vérifier la clé par un autre moyen (comme la clé des responsables Debian/Ubuntu, la vérifier depuis le tableau de bord, etc., etc.).

Une fois que vous avez vérifié la signature correcte sur le fichier Releasename__, vous pouvez passer à l'étape suivante - vérification du fichier Packages.

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

Comme vous pouvez le constater, la signature se trouve dans le fichier Releasesigné. Nous avons donc vérifié l’intégrité du fichier Packagesen calculant et en comparant son empreinte digitale SHA-256.

La dernière étape est similaire. Vous devez calculer et comparer les empreintes digitales de chaque package:

$ 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

À ce stade, nous avons sécurisé le chaînage du package dans le fichier Releasesigné. Donc, si vous croyez la signature sur le fichier Releasename__, vous pouvez être sûr que le package a été téléchargé intact.

Vous pouvez en lire plus dans l'article Secure APT sur le wiki de Debian.

14
oerdnj