Skip to content


Créer un ou plusieurs dépots Debian/Ubuntu locaux signés (gpg) accessibles en HTTP

Prérequis

Avoir les commandes : reprepro et gpg

# apt-get install reprepro

Nous présumons que vous avez Apache2 (ou un autre serveur Web) installé et opérationnel et dont le DocumentRoot pointe sur /var/www.

Préparation des répertoires de base

# mkdir -p /var/www/ubuntu/conf

Configuration

Nous créons les deux branches dont nous aurons besoin. Vous pouvez tout aussi bien n'en créer qu'une pour commencer


# nano /var/www/ubuntu/conf/distributions
 
Origin: moi
Label: moi
Suite: stable
Codename: natty
Version: 11.04
Architectures: i386 amd64
Components: main
Description: Depôt de moi pour les ubuntus Natty
 
Origin: moi
Label: moi
Suite: stable
Codename: quantal
Version: 12.04
Architectures: i386 amd64
Components: main
Description: Depôt de moi pour les ubuntus Quantal
On fixe les droits sur le répertoire /var/www/ubuntu/

# chown -R www-data:www-data /var/www/ubuntu/

Construction du référentiel

# reprepro -b . export

La commande à créé deux répertoires: db et dists

# ls conf db dists

Nous créons un script qui permet d'ajouter plusieurs paquets.

#!/bin/bash 
# $1 chemin/complet/vers/les/paquets 
# $2 nom de code natty/quantal 
 
for paquet in $1/*.deb; 
do reprepro -b . includedeb $2 $paquet; 
done

Signons nos dépôts

Générer une clé publique pour signer son dépot :


# gpg --gen-key
 
gpg (GnuPG) 1.4.11; Copyright (C) 2010 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.
 
Sélectionnez le type de clé désiré:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (signature seule)
   (4) RSA (signature seule)
Votre choix ? 1
les clés RSA peuvent faire entre 1024 et 4096 bits de longueur.
Quelle taille de clé désirez-vous ? (2048) 
La taille demandée est 2048 bits
Spécifiez combien de temps cette clé devrait être valide.
         0 = la clé n'expire pas
      <n>  = la clé expire dans n jours
      <n>w = la clé expire dans n semaines
      <n>m = la clé expire dans n mois
      <n>y = la clé expire dans n années
La clé est valide pour ? (0) 
La clé n'expire pas du tout
Est-ce correct ? (o/N) O
 
Vous avez besoin d'un nom d'utilisateur pour identifier votre clé; le
programme le construit à partir du nom réel, d'un commentaire et d'une
adresse e-mail de cette manière:
   « Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de> »
 
Nom réel: moi
Adresse e-mail: moi
Commentaire: Signature de moi pour les dépots en local.
Vous utilisez le jeu de caractères 'utf-8'.
Vous avez sélectionné ce nom d'utilisateur:
    "moi (Signature de moi pour les dépots en local.) <moi>"
 
Changer le (N)om, le (C)ommentaire, l'(E)-mail ou (O)K/(Q)uitter ? O
Vous avez besoin d'une phrase de passe pour protéger votre clé
secrète.
 
Un grand nombre d'octets aléatoires doit être généré. Vous devriez faire
autre-chose (taper au clavier, déplacer la souris, utiliser les disques)
pendant la génération de nombres premiers; cela donne au générateur de
nombres aléatoires une meilleure chance d'avoir assez d'entropie.
...+++++
+++++
Un grand nombre d'octets aléatoires doit être généré. Vous devriez faire
autre-chose (taper au clavier, déplacer la souris, utiliser les disques)
pendant la génération de nombres premiers; cela donne au générateur de
nombres aléatoires une meilleure chance d'avoir assez d'entropie.
.....+++++
....+++++
gpg: clé E03D4ACE marquée comme ayant une confiance ultime.
les clés publique et secrète ont été créées et signées.
 
gpg: vérifier la base de confiance
gpg: 3 marginale(s) nécessaires, 1 complète(s) nécessaires, modèle
de confiance PGP
gpg: profondeur: 0  valide:   1  signé:   0
confiance: 0-. 0g. 0n. 0m. 0f. 1u
pub   2048R/E03D4ACE 2013-04-08
      Empreinte de la clé = E9B5 BADF 07E0 2E14 12A2  3886 6D7A 0F11 E03D 4ACE
uid                  moi (Signature de moi pour les dépots en local.) <moi>
-------------------

Exportons cette clé

# gpg --armor --export > key/key.pub

Ceci nous permettra d'importer cette clé dans nos gestionnaire de paquets.

Si vous possédez plusieurs clés, pour le courriel, etc... Il faut récupérer l'identifiant publique de la clé voulue !

Içi c'est : E03D4ACE

Nous faisons alors :

# gpg --armor --export E03D4ACE > key/key.pub

Vous pouvez d'ailleurs lister les clés que vous possédez :

# gpg --list-key

Signons nos dépôts

Pour cela il faut récupérer : pub 2048R/E03D4ACE 2013-04-08

Ajouter au fichier de conf/distributions l'indication : SignWith

Origin: moi 
Label: moi 
Suite: stable 
Codename: natty 
Version: 11.04 
Architectures: i386 amd64 
Components: main 
Description: Depôt de moi pour les ubuntus Natty 
SignWith: E03D4ACE 
 
Origin: moi 
Label: moi 
Suite: stable 
Codename: quantal 
Version: 12.04 
Architectures: i386 amd64 
Components: main 
Description: Depôt de moi pour les ubuntus Quantal 
SignWith: E03D4ACE

De là nous signons les dépôts !

# reprepro --ask-passphrase -b . export

Ajout des dépôts chez un client

De là il est possible d'ajouter les dépôts.

echo "deb http://ip-server/ubuntu/apt quantal main" >> /etc/apt/sources.list 
echo "deb http://ip-server/ubuntu/apt natty main" >> /etc/apt/sources.list

Si vous faites un :

apt-get update

980 o réceptionnés en 7s (129 o/s) Lecture des listes de paquets... Fait 
W: Erreur de GPG : http://ip-serveur quantal Release : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 6D7A0F11E03D4ACE 
W: Erreur de GPG : http://ip-serveur natty Release : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 6D7A0F11E03D4ACE

Ceci est dû au fait que les dépôts sont signés, mais que vous n'avez pas intégré la clé ! Intégrons la :

wget -q http://ip-serveur/ubuntu/apt/key/key.pub -O- | sudo apt-key add -

Voilà !

Print Friendly, PDF & Email

Posted in Debian, Important, Linux, Sécurité, Technique, Toutes. Tagged with , , , , , .

0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.

Time limit is exhausted. Please reload CAPTCHA.


/* */
Creative Commons License
Cette création par Laurent Besson est mise à disposition selon les termes de la licence Creative Commons Paternité-Partage des Conditions Initiales à l'Identique 2.0 France.