Verwendung von Reprepro für ein sicheres Paket-Repository unter Ubuntu 14.04

Einführung in Pakete und Repositorys

Wir waren alle dort - wir brauchen ein Programm - und was machen wir? Die meisten von uns nur und presto! Wir haben Postfix auf magische Weise installiert.

Es ist jedoch nicht wirklich magisch. Der Paketmanager apt-get sucht, lädt das Paket herunter und installiert es für Sie. Dies ist sehr praktisch, aber was ist, wenn apt-get das benötigte Programm nicht in der Standard-Repository-Liste findet? Zum Glück können Benutzer mit apt-get benutzerdefinierte Download-Speicherorte (so genannte Repositories) angeben.

In diesem Tutorial werden wir Ihr eigenes sicheres Repository einrichten und für andere Benutzer öffentlich zugänglich machen. Wir werden das Repository auf einem Ubuntu 14.04 LTS-Droplet erstellen und den Download von einem anderen Droplet mit derselben Distribution testen.

Lesen Sie unser Tutorial unter https://www.digitalocean.com/community/tutorials/how-to-manage-packages-in-ubuntu-and-debian-with-apt, um das Beste aus diesem Handbuch herauszuholen -get-apt-cache [Pakete mit apt-get verwalten].

Voraussetzungen

Zwei * Ubuntu 14.04 LTS * -Tröpfchen

Am Ende des Leitfadens haben Sie:

  • Vorbereitet und veröffentlicht einen Repository-Signaturschlüssel

  • Richten Sie mit Reprepro, dem Repository-Manager, ein Repository ein

  • Veröffentlichte das Repository mit dem Webserver Nginx

  • Das Repository wurde auf einem anderen Server hinzugefügt

Vorbereiten und Veröffentlichen eines Signaturschlüssels

Zunächst benötigen wir einen gültigen Paketsignaturschlüssel. Dieser Schritt ist für ein sicheres Repository von entscheidender Bedeutung, da wir alle Pakete digital signieren werden. Das Signieren von Paketen gibt dem Downloader die Gewissheit, dass der Quelle vertraut werden kann.

In diesem Abschnitt generieren Sie einen verschlüsselten öffentlichen Hauptschlüssel und einen Unterschlüssel zum Signieren, indem Sie die folgenden Schritte ausführen:

  • Generieren Sie einen Hauptschlüssel

  • Generieren Sie einen Unterschlüssel für die Paketsignatur

  • Trennen Sie den Hauptschlüssel vom Unterschlüssel

Generieren Sie einen Hauptschlüssel

Machen wir den Hauptschlüssel. Dieser Schlüssel sollte sicher aufbewahrt werden, da dies das ist, worauf die Leute vertrauen werden.

Bevor wir beginnen, sollten wir Folgendes installieren:

apt-get install rng-tools

GPG benötigt zufällige Daten, die als Entropie bezeichnet werden, um Schlüssel zu generieren. Entropie wird normalerweise im Laufe der Zeit vom Linux-Kernel generiert und in einem Pool gespeichert. Auf Cloud-Servern (wie Droplets) kann der Kernel jedoch Probleme haben, den für GPG erforderlichen Entropiebetrag zu generieren. Um dem Kernel zu helfen, installieren wir das Programm rngd (im Paket rng-tools enthalten). Dieses Programm fragt den Host-Server (wo sich die Droplets befinden) nach Entropie. Nach dem Abrufen fügt "+ rngd +" die Daten dem Entropiepool hinzu, die von anderen Anwendungen wie GPG verwendet werden sollen.

Wenn Sie eine Nachricht wie diese erhalten:

Trying to create /dev/hwrng device inode...
Starting Hardware RNG entropy gatherer daemon: (failed).
invoke-rc.d: initscript rng-tools, action "start" failed.

Starten Sie den Daemon manuell mit:

rngd -r /dev/urandom

Standardmäßig sucht rngd nach einem speziellen Gerät, von dem Entropie abgerufen werden kann. Einige Droplets haben dieses Gerät nicht. Um dies auszugleichen, verwenden wir das Pseudozufallsgerät, indem wir die Direktive spezifizieren. Weitere Informationen finden Sie in unserem Tutorial: https://www.digitalocean.com/community/tutorials/how-to-setup-additional-entropy-for-cloud-servers- using-haveged[How to Setup Additional Entropy ].

Jetzt, da wir über einen Entropiepool verfügen, können wir den Hauptschlüssel generieren. Rufen Sie dazu den Befehl auf. Sie sehen eine Eingabeaufforderung ähnlich der folgenden:

gpg --gen-key
gpg (GnuPG) 1.4.16; Copyright (C) 2013 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.

Please select what kind of key you want:
  (1) RSA and RSA (default)
  (2) DSA and Elgamal
  (3) DSA (sign only)
  (4) RSA (sign only)
Your selection?

Geben Sie in der Eingabeaufforderung die erste Option "RSA und RSA (Standard)" + 1 + an. Bei Auswahl dieser Option wird zuerst ein Signaturschlüssel und dann ein Verschlüsselungsunterschlüssel generiert (beide verwenden den RSA-Algorithmus). Wir benötigen keinen Verschlüsselungsschlüssel für dieses Lernprogramm, aber wie eine großartige Person einmal sagte: "Warum nicht?" Es ist kein Nachteil, beides zu haben, und Sie können den Schlüssel in Zukunft für die Verschlüsselung verwenden.

Drücken Sie und Sie werden aufgefordert, eine Schlüsselgröße einzugeben:

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)

Die Schlüsselgröße hängt direkt davon ab, wie sicher Ihr Hauptschlüssel sein soll. Je höher die Bitgröße, desto sicherer ist der Schlüssel. Das Debian-Projekt empfiehlt die Verwendung von 4096 Bit für jeden Signaturschlüssel, daher würde ich dies hier angeben. Für die nächsten 2-5 Jahre ist die Standardbitgröße 2048 ausreichend, wenn Sie diese verwenden möchten. Eine Größe von 1024 ist unangenehm unsicher und sollte nicht verwendet werden.

Drücken Sie für die Eingabeaufforderung zum Ablaufen.

Please specify how long the key should be valid.
        0 = key does not expire
     <n>  = key expires in n days
     <n>w = key expires in n weeks
     <n>m = key expires in n months
     <n>y = key expires in n years
Key is valid for? (0)

Hauptschlüssel haben normalerweise kein Ablaufdatum, setzen Sie diesen Wert jedoch so lange, wie Sie erwarten, diesen Schlüssel zu verwenden. Wenn Sie dieses Repository nur für die nächsten 6 Monate verwenden möchten, können Sie dies angeben. wird es für immer gültig machen.

Hit also. Sie werden aufgefordert, eine „Benutzer-ID“ zu generieren. Diese Informationen werden von anderen und von Ihnen selbst zur Identifizierung dieses Schlüssels verwendet. Verwenden Sie also echte Informationen!

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
   "Heinrich Heine (Der Dichter) <[email protected]>"

Real name:
Email address:
Comment:
You selected this USER-ID:
   "Mark Lopez <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?

Wenn die Informationen korrekt sind, drücken Sie und. Wir müssen ein Passwort hinzufügen, um sicherzustellen, dass nur Sie Zugriff auf diesen Schlüssel haben. Stellen Sie sicher, dass Sie sich dieses Passwort * merken *, da es keine Möglichkeit gibt, ein Passwort für den gpg-Schlüssel wiederherzustellen (eine gute Sache).

You need a Passphrase to protect your secret key.

Enter passphrase:
Repeat passphrase:

Nun kann etwas Magie (Mathe) passieren. Dies kann eine Weile dauern, also lehnen Sie sich zurück oder holen Sie sich eine Tasse Ihres Lieblingsgetränks.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 300 more bytes)
+++++
................+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
..+++++
+++++
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 10E6133F marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   4096R/ 2014-08-16
     Key fingerprint = 1CD3 22ED 54B8 694A 0975  7164 6C1D 28A0 10E6 133F
uid                  Mark Lopez <[email protected]>
sub   4096R/ 2014-08-16

Jetzt haben wir einen Hauptschlüssel. Die Ausgabe zeigt, dass wir einen Hauptschlüssel zum Signieren erstellt haben (`in der Zeile oben). Ihr Schlüssel wird unterschiedliche IDs haben. Notieren Sie sich Ihre Signaturschlüssel IS (das Beispiel verwendet). Diese Informationen benötigen wir in den nächsten Schritten, wenn Sie einen weiteren Unterschlüssel zum Signieren erstellen.

Generieren Sie einen Unterschlüssel für die Paketsignatur

Jetzt erstellen wir einen zweiten Signaturschlüssel, damit wir den Hauptschlüssel auf diesem Server nicht benötigen. Stellen Sie sich den Hauptschlüssel als Root-Berechtigung vor, die den Unterschlüsseln die Berechtigung erteilt. Wenn ein Benutzer dem Hauptschlüssel vertraut, bedeutet dies, dass er einem Unterschlüssel vertraut.

Im Terminal ausführen:

+ gpg --edit-key +

Ersetzen Sie die Beispiel-ID durch die ID Ihres Schlüssels. Dieser Befehl bringt uns in die Umwelt. Hier können wir unseren neuen Schlüssel bearbeiten und einen Unterschlüssel hinzufügen. Sie sehen die folgende Ausgabe:

gpg (GnuPG) 1.4.16; Copyright (C) 2013 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.

Secret key is available.

pub  4096R/10E6133F  created: 2014-08-16  expires: never       usage: SC
                    trust: ultimate      validity: ultimate
sub  4096R/7B34E07C  created: 2014-08-16  expires: never       usage: E
[ultimate] (1). Mark Lopez <[email protected]>

gpg>

Geben Sie an der Eingabeaufforderung "+ addkey +" ein:

addkey

Drücken Sie . GPG fordert Sie zur Eingabe Ihres Passworts auf. Geben Sie das Kennwort ein, mit dem Sie diesen Schlüssel verschlüsselt haben.

Key is protected.

You need a passphrase to unlock the secret key for
user: "Mark Lopez <[email protected]>"
4096-bit RSA key, ID 10E6133F, created 2014-08-16

gpg: gpg-agent is not available in this session
Enter passphrase: <hidden>

Sie sehen die folgende Eingabeaufforderung für den Schlüsseltyp.

Please select what kind of key you want:
  (3) DSA (sign only)
  (4) RSA (sign only)
  (5) Elgamal (encrypt only)
  (6) RSA (encrypt only)
Your selection?

Wir möchten einen <i> signierenden </ i> Unterschlüssel erstellen, wählen Sie also "RSA (nur signieren)" + 4 +. RSA ist für den Client schneller, während DSA für den Server schneller ist. In diesem Fall entscheiden wir uns für RSA, da möglicherweise Hunderte von Kunden für jede Unterschrift, die wir auf einem Paket vornehmen, eine Bestätigung benötigen. Die beiden Typen sind gleichermaßen sicher.

Wieder werden wir zur Eingabe einer Schlüsselgröße aufgefordert.

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)

Dieses Tutorial dient der Erhöhung der Sicherheit.

Please specify how long the key should be valid.
        0 = key does not expire
     <n>  = key expires in n days
     <n>w = key expires in n weeks
     <n>m = key expires in n months
     <n>y = key expires in n years
Key is valid for? (0)

Wir haben bereits einen Hauptschlüssel, daher ist die Ablaufzeit für den Unterschlüssel weniger wichtig. Ein Jahr ist ein guter Zeitrahmen.

Drücken Sie die Eingabetaste, und geben Sie für die nächsten beiden Eingabeaufforderungen zweimal (yes) ein. Einige Mathematik generiert einen anderen Schlüssel.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
............+++++
.+++++

pub  4096R/10E6133F  created: 2014-08-16  expires: never       usage:
                    trust: ultimate      validity: ultimate
sub  4096R/7B34E07C  created: 2014-08-16  expires: never       usage:
sub  4096R/  created: 2014-08-16  expires: 2015-08-16  usage:
[ultimate] (1). Mark Lopez <[email protected]>

gpg>

Geben Sie an der Eingabeaufforderung ein.

save

In der obigen Ausgabe gibt der von unserem Hauptschlüssel an, dass der Schlüssel nur zum Signieren und Zertifizieren bestimmt ist. Das bedeutet, der Schlüssel darf nur zur Verschlüsselung verwendet werden. Unser Signaturschlüssel wird nur mit dem korrekt angezeigt.

Notieren Sie sich die ID Ihres neuen Signaturschlüssels (siehe Beispiel in der zweiten Zeile oben). Die ID Ihres Schlüssels ist unterschiedlich.

Drücken Sie die Eingabetaste, um zum Terminal zurückzukehren und Ihren neuen Schlüssel zu speichern.

save

Trennen Sie den Hauptschlüssel vom Unterschlüssel

Um den Unterschlüssel zu erstellen, benötigen wir den Hauptschlüssel nicht auf unserem Server, wodurch er sicherer wird. Jetzt lösen wir unseren Hauptschlüssel von unserem Unterschlüssel. Wir müssen den Hauptschlüssel und den Unterschlüssel exportieren, dann die Schlüssel aus dem Speicher von GPG löschen und dann nur den Unterschlüssel erneut importieren.

Verwenden Sie zuerst die Befehle und, um den gesamten Schlüssel zu exportieren. Denken Sie daran, die ID Ihres Hauptschlüssels zu verwenden!

gpg --export-secret-key  > private.key
gpg --export  >> private.key

Standardmäßig wird der Schlüssel auf unserer Konsole gedruckt, stattdessen leiten wir die Ausgabe in eine neue Datei (). Stellen Sie sicher, dass Sie Ihre eigene Hauptschlüssel-ID wie oben angegeben angeben.

  • Wichtig: Erstellen Sie eine Kopie der Datei an einem sicheren Ort * (nicht auf dem Server). Mögliche Speicherorte befinden sich auf einer Diskette oder einem USB-Laufwerk. Diese Datei enthält Ihren privaten Schlüssel, Ihren öffentlichen Schlüssel, Ihren Verschlüsselungsunterschlüssel und Ihren Signaturunterschlüssel.

  • Nachdem Sie diese Datei an einem sicheren Ort gesichert haben, * löschen Sie die Datei:

#back up the private.key file before running this# rm private.key

Exportieren Sie nun Ihren öffentlichen Schlüssel und Ihren Unterschlüssel. Stellen Sie sicher, dass Sie die IDs so ändern, dass sie mit dem Hauptschlüssel und dem zweiten von Ihnen generierten Unterschlüssel übereinstimmen (verwenden Sie nicht den ersten Unterschlüssel).

gpg --export  > public.key
gpg --export-secret-subkeys  > signing.key

Nachdem wir ein Backup unserer Schlüssel haben, können wir unseren Hauptschlüssel von unserem Server entfernen.

gpg --delete-secret-key

Importieren Sie nur unseren signierenden Unterschlüssel erneut.

gpg --import public.key signing.key

Stellen Sie sicher, dass wir unseren Hauptschlüssel nicht mehr auf unserem Server haben:

gpg --list-secret-keys
sec  4096R/10E6133F 2014-08-16
uid                  Mark Lopez <[email protected]>
ssb   4096R/7B34E07C 2014-08-16
ssb   4096R/A72DB3EF 2014-08-16

Beachten Sie die * # * nach * sec *. Dies bedeutet, dass unser Hauptschlüssel nicht installiert ist. Der Server enthält nur unseren Signaturunterschlüssel.

Räumen Sie Ihre Schlüssel auf:

rm public.key signing.key

Als letztes müssen Sie Ihren Signaturschlüssel veröffentlichen.

gpg --keyserver keyserver.ubuntu.com --send-key

Dieser Befehl veröffentlicht Ihren Schlüssel in einem öffentlichen Schlüsselspeicher - in diesem Fall auf dem Ubuntu-eigenen Schlüsselserver. Auf diese Weise können andere Benutzer Ihren Schlüssel herunterladen und Ihre Pakete auf einfache Weise überprüfen.

Richten Sie ein Repository mit Reprepro ein

Kommen wir jetzt zum Punkt dieses Tutorials: Erstellen eines Repositorys mit passendem Abruf. Apt-get-Repositories sind nicht die am einfachsten zu verwaltenden Dinge. Zum Glück R. Bernhard schuf Reprepro, der früher „ein lokales Repository von Debian-Paketen produzierte, verwaltete und synchronisierte“ (auch bekannt als Mirrorer). Reprepro steht unter der GNU-Lizenz und ist vollständig Open Source.

Installieren und konfigurieren Sie Reprepro

Reprepro kann über die Standard-Ubuntu-Repositorys installiert werden.

apt-get update
apt-get install reprepro

Die Konfiguration für Reprepro ist repository-spezifisch, dh Sie können unterschiedliche Konfigurationen festlegen, wenn Sie mehrere Repositorys erstellen. Machen wir uns zuerst ein Zuhause für unser Repository.

Erstellen Sie einen dedizierten Ordner für dieses Repository und verschieben Sie ihn.

mkdir -p /var/repositories/
cd /var/repositories/

Erstellen Sie das Konfigurationsverzeichnis.

mkdir conf
cd conf/

Erstellen Sie zwei leere Konfigurationsdateien (und).

touch options distributions

Öffnen Sie die Datei in Ihrem bevorzugten Texteditor (standardmäßig installiert).

nano options

Diese Datei enthält Optionen für Reprepro und wird jedes Mal gelesen, wenn Reprepro ausgeführt wird. Es gibt mehrere Optionen, die Sie hier angeben können. Weitere Optionen finden Sie im Handbuch.

Fügen Sie in Ihrem Texteditor Folgendes hinzu.

ask-passphrase

Die Direktive fordert Reprepro auf, beim Signieren ein GPG-Passwort anzufordern. Wenn wir dies nicht zu den Optionen hinzufügen, stirbt Reprepro, wenn unser Schlüssel verschlüsselt ist.

Strg + x, dann y und Enter speichern unsere Änderungen und kehren zur Konsole zurück.

Öffne die Datei.

nano distributions

Diese Datei enthält vier erforderliche Anweisungen. Fügen Sie diese der Datei hinzu.

Codename:
Components:
Architectures:
SignWith:

Die Direktive bezieht sich direkt auf den Codenamen der freigegebenen Debian-Distributionen und ist erforderlich. Dies ist der Codename für die Distribution, die Pakete herunterladen wird, und muss nicht unbedingt mit der Distribution dieses Servers übereinstimmen. Zum Beispiel heißt die Ubuntu 14.04 LTS-Version * trusty *, Ubuntu 12.04 LTS heißt * exact * und Debian 7.6 heißt * wheezy *. Dieses Repository ist für Ubuntu 14.04 LTS, daher sollte hier * trusty * gesetzt werden.

Dieses Feld ist erforderlich. Dies ist nur ein einfaches Repository, also setzen Sie hier "+ main +". Es gibt andere Namespaces wie "non-free" oder "contrib" - Informationen zu geeigneten Namensschemata finden Sie unter apt-get.

ist ein weiteres Pflichtfeld. In diesem Feld werden Binärarchitekturen in diesem Repository durch Leerzeichen getrennt aufgelistet. Dieses Repository wird Pakete für 32-Bit- und 64-Bit-Server hosten, daher wird hier festgelegt. Fügen Sie nach Bedarf Architekturen hinzu oder entfernen Sie sie.

Um festzulegen, wie andere Computer unsere Pakete überprüfen, verwenden wir die Direktive. Dies ist eine optionale Anweisung, die jedoch zum Signieren erforderlich ist. Der Signaturschlüssel in diesem Beispiel hatte zuvor die ID, die hier festgelegt wird. Ändern Sie dieses Feld entsprechend der von Ihnen generierten ID des Unterschlüssels.

Speichern und beenden Sie die Datei mit Strg + `x, dann y und Enter.

Sie haben nun die erforderliche Struktur für Reprepro eingerichtet.

Fügen Sie ein Paket mit Reprepro hinzu

Lassen Sie uns zunächst unser Verzeichnis in einen temporären Speicherort ändern.

mkdir -p /tmp/debs
cd /tmp/debs

Wir brauchen einige Beispielpakete, mit denen wir arbeiten können - sie mit:

wget https://github.com/Silvenga/examples/raw/master/example-helloworld_1.0.0.0_amd64.deb
wget https://github.com/Silvenga/examples/raw/master/example-helloworld_1.0.0.0_i386.deb

Diese Pakete wurden ausschließlich für dieses Handbuch erstellt und enthalten ein einfaches Bash-Skript, um die Funktionalität unseres Repositorys zu beweisen. Sie können verschiedene Pakete verwenden, wenn Sie möchten.

Das Ausführen des Programms + ls + sollte uns folgendes Layout geben:

ls
example-helloworld_1.0.0.0_amd64.deb  example-helloworld_1.0.0.0_i386.deb

Wir haben jetzt zwei Beispielpakete. Eine für 32-Bit-Computer (i386) und eine für 64-Bit-Computer (amd64). Sie können beide zu unserem Repository hinzufügen mit:

reprepro -b /var/repositories includedeb  example-helloworld_1.0.0.0_*

Das Argument * -b * gibt das Verzeichnis „(b) ase“ für das Repository an. Der Befehl erfordert zwei Argumente - + <Verteilungscodename> und <Dateipfad (e)> +. Reprepro fordert Sie zweimal zur Eingabe unseres Unterschlüssel-Passcodes auf.

Exporting indices...
C3D099E3A72DB3EF Mark Lopez <[email protected]> needs a passphrase
Please enter passphrase:
C3D099E3A72DB3EF Mark Lopez <[email protected]> needs a passphrase
Please enter passphrase:

Erfolg!

Auflisten und Löschen

Wir können die verwalteten Pakete mit dem Befehl, gefolgt vom Codenamen, auflisten. Zum Beispiel:

reprepro -b /var/repositories/ list

trusty|main|i386: example-helloworld 1.0.0.0
trusty|main|amd64: example-helloworld 1.0.0.0

Verwenden Sie den Befehl, um ein Paket zu löschen. Der Befehl remove erfordert den Codenamen des Pakets und den Paketnamen. Zum Beispiel:

reprepro -b /var/repositories/ remove

Machen Sie das Repository öffentlich

Wir haben jetzt ein lokales Paket-Repository mit einigen Paketen. Als Nächstes installieren wir Nginx als Webserver, um dieses Repository öffentlich zu machen.

Installieren Sie Nginx

apt-get update
apt-get install nginx

Nginx wird mit einer Standard-Beispielkonfiguration geliefert. Erstellen Sie eine Kopie der Datei, falls Sie sie zu einem anderen Zeitpunkt anzeigen möchten.

mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
touch /etc/nginx/sites-available/default

Nachdem wir eine leere Konfigurationsdatei haben, können wir unseren Nginx-Server so konfigurieren, dass er unser neues Repository hostet.

Öffnen Sie die Konfigurationsdatei mit Ihrem bevorzugten Texteditor.

nano /etc/nginx/sites-available/default

Fügen Sie die folgenden Konfigurationsanweisungen hinzu:

server {

   ## Let your repository be the root directory
   root        /var/repositories;

   ## Always good to log
   access_log  /var/log/nginx/repo.access.log;
   error_log   /var/log/nginx/repo.error.log;

   ## Prevent access to Reprepro's files
   location ~ /(db|conf) {
       deny        all;
       return      404;
   }
}

Nginx hat einige ziemlich vernünftige Standardeinstellungen. Wir mussten lediglich das Stammverzeichnis konfigurieren und gleichzeitig den Zugriff auf die Reprepro-Dateien verweigern. Weitere Einzelheiten finden Sie in den Kommentaren in der Zeile.

Starten Sie den Nginx-Dienst neu, um diese neuen Konfigurationen zu laden.

service nginx restart

Ihr öffentliches Ubuntu-Repository ist einsatzbereit!

Sie benötigen die IP-Adresse Ihres Droplets, um den Benutzern den Speicherort des Repositorys mitzuteilen. Wenn Sie die öffentliche Adresse Ihres Droplets nicht kennen, finden Sie sie unter.

ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 04:01:23:f9:0e:01
         inet addr:  Bcast:198.199.114.255  Mask:255.255.255.0
         inet6 addr: fe80::601:23ff:fef9:e01/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:16555 errors:0 dropped:0 overruns:0 frame:0
         TX packets:16815 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:7788170 (7.7 MB)  TX bytes:3058446 (3.0 MB)

Im obigen Beispiel lautet die Serveradresse 198.199.114.168. Dein wird anders sein.

Mit der IP-Adresse Ihres Reprepro-Servers können Sie dieses Repository nun jedem anderen geeigneten Server hinzufügen.

Installieren Sie ein Paket aus unserem neuen Repository

Wenn Sie dies noch nicht getan haben, starten Sie ein anderes Droplet mit Ubuntu 14.04 LTS, damit Sie eine Testinstallation von Ihrem neuen Repository aus durchführen können.

Laden Sie auf dem neuen Server Ihren öffentlichen Schlüssel herunter, um die Pakete aus Ihrem Repository zu überprüfen. Denken Sie daran, dass Sie Ihren Schlüssel für veröffentlicht haben.

Dies geschieht mit dem Befehl.

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys

Dieser Befehl lädt den angegebenen Schlüssel herunter und fügt ihn der apt-get-Datenbank hinzu. Der Befehl weist Sie an, GPG zum Herunterladen des Schlüssels zu verwenden. Die beiden anderen Argumente werden direkt an GPG übergeben. Da Sie Ihren Schlüssel auf "keyserver.ubuntu.com" hochgeladen haben, verwenden Sie die Direktive, um den Schlüssel vom selben Speicherort abzurufen. Die Direktive gibt den genauen Schlüssel an, der hinzugefügt werden soll.

Fügen Sie nun die Adresse des Repositorys hinzu, nach der gesucht werden soll. Sie benötigen die IP-Adresse Ihres Repository-Servers aus dem vorherigen Schritt. Dies ist mit dem Programm einfach zu bewerkstelligen.

add-apt-repository "deb http:/// trusty main"

Beachten Sie die Zeichenfolge, die wir geben. Die meisten Debian-Repositorys können im folgenden allgemeinen Format hinzugefügt werden:

deb (repository location) (current distribution code name)  (the components name)

Der Repository-Speicherort sollte auf den Speicherort Ihres Servers festgelegt werden. Wir haben einen HTTP-Server, das Protokoll lautet also * http: // *. Der Standort des Beispiels war. Der Codename unseres Servers ist * vertrauenswürdig *. Dies ist ein einfaches Repository, daher haben wir die Komponente "main" genannt.

Nachdem wir das Repository hinzugefügt haben, stellen Sie sicher, dass ein ausgeführt wird. Dieser Befehl überprüft alle bekannten Repositorys auf Aktualisierungen und Änderungen (einschließlich des gerade von Ihnen erstellten).

apt-get update

Nach dem Update von apt-get können Sie nun das Beispielpaket aus Ihrem Repository installieren. Verwenden Sie den Befehl normal.

apt-get install example-helloworld

Wenn alles erfolgreich ist, können Sie jetzt ausführen und sehen:

Hello, World!
This package was successfully installed!

Herzliche Glückwünsche! Sie haben gerade ein Paket aus dem von Ihnen erstellten Repository installiert!

Führen Sie den folgenden Befehl aus, um das Beispielpaket zu entfernen:

apt-get remove example-helloworld

Dadurch wird das gerade installierte Beispielpaket entfernt.

Fazit

In diesem Handbuch möchten Sie ein sicheres APT-Repository erstellen. Sie haben gelernt, wie Sie einen sicheren Schlüssel zum Signieren von Paketen erstellen. wie man ein Repository mit Reprepro erstellt und verwaltet; und wie man dieses Repository zu einem anderen Server hinzufügt. Lesen Sie die anderen Anleitungen hier, um Ihr Wissen über die coolen Funktionen von Open Source und Linux zu erweitern.