Je veux créer un propre référentiel pour notre application. J'ai créé une clé principale avec la signature de la sous-clé avec pgp avant et je signe le paquet deb avec:
dpkg-sig --sign builder sample.deb
Ensuite, je crée le repo avec reprepro:
reprepro --ask-passphrase -b base includedeb all sample.deb
Reprepro crée les fichiers signés nécessaires:
./conf:
distributions options
./db:
checksums.db contents.cache.db packages.db references.db release.caches.db version
./dists:
all
./dists/all:
InRelease main Release Release.gpg
./dists/all/main:
binary-AMD64 binary-i386
./dists/all/main/binary-AMD64:
Packages Packages.gz Release
./dists/all/main/binary-i386:
Packages Packages.gz Release
./pool:
main
./pool/main:
s
./pool/main/s:
sample
./pool/main/s/sample:
sample_2.2.48.9015_all.deb
J'installe la clé publique sur l'ordinateur client, mais après l'installation du package, je reçois le message suivant:
WARNING: The following packages cannot be authenticated!
sample
Install these packages without verification? [y/N]
Pourquoi?
La signature GPG est compliquée. Pour les référentiels APT, il existe deux couches de signatures GPG:
dpkg-sig
ou ou debsign
.Vous voyez ce message car APT ne voit aucune signature sur les métadonnées de votre référentiel. Vous pouvez y arriver en ajoutant SignWith
à votre configuration reprepro. Vous pouvez en lire plus dans un article de blog complet que j'ai écrit, ici .
Vous pouvez vérifier que SignWith
a fonctionné en recherchant un fichier nommé Release.gpg
ou InRelease
. Si vous trouvez un fichier nommé InRelease
, affichez-en le contenu et assurez-vous qu'une signature GPG se trouve en bas. Si tel est le cas, reprepro a généré la signature correctement. N'oubliez pas que les référentiels signés par GPG sont toujours vulnérables à un grand nombre d'attaques d'interception, à moins qu'ils ne soient gérés via HTTPS.
Je vous recommande également de vérifier que la clé publique GPG a été correctement importée sur le système client en exécutant apt-key list
. Si vous ne voyez pas la clé dans la liste, vous devez l'ajouter avec apt-key add filename
.
Il est important de noter qu'Ubuntu et Debian ne vérifient pas les signatures GPG des paquets - elles sont désactivées par défaut et terriblement, terriblement difficiles à obtenir. Je conseillerais d’éviter que GPG signe vos colis.
Notez également que vous devez distribuer votre référentiel sur HTTPS afin d'éviter une multitude de bugs de sécurité (même avec les signatures GPG).