Eigenen Package-Server einrichten
Die folgenden Schritte können lokal auf einem TwinCAT/BSD-System durchgeführt werden.
1. Schlüssel für RSA-Verschlüsselung erstellen
Zunächst muss ein RSA-Schlüsselpaar erstellt werden. Ein RSA-Schlüsselpaar besteht aus einem privaten und einem öffentlichen Schlüssel. Der private RSA-Schlüssel wird zur Erzeugung digitaler Signaturen verwendet, und der öffentliche RSA-Schlüssel wird zur Überprüfung digitaler Signaturen verwendet.
Erstellen Sie einen privaten RSA-Schlüssel. Sie haben die Wahl zwischen RSA-Schlüsselgrößen von 2048 oder 4096 Bit:openssl genrsa -out myRSAprivate.key 2048
Erstellen Sie einen öffentlichen RSA-Schlüssel:openssl rsa -in myRSAprivate.key -out myRSApublic.key -pubout
Beschränken Sie den Zugriff nur auf root
oder speichern Sie den privaten Schlüssel an einem anderen Ort:chmod 0400 myRSAprivate.key
2. Pakete vom Beckhoff Package-Server abrufen
In diesem Schritt können entweder alle Pakete vom Beckhoff Package-Server abgerufen werden oder nur die Pakete, die auf dem System installiert sind.
Alle Pakete vom Server abrufen:doas pkg fetch --yes --output /var/db/myRepository --all
Nur die installierten Pakete abrufen:doas sh -c "pkg info | awk '{print \$1}' | xargs -I {} pkg fetch --yes --output /var/db/myRepository {}"
3. Repository modifizieren und erstellen
Die heruntergeladenen Pakete können mit benutzerdefinierten Paketen angereichert und auf diese Weise ein eigenes Repository zusammengestellt werden.
Benutzerdefinierten Pakete in das Repository verschieben:mv my-package /var/db/myRepository/All/
Repository erstellen und mit dem zuvor erstellen privatem Schlüssel versehen:doas pkg repo /var/db/myRepository/ myRSAprivate.key
4. Repository-Verzeichnis auf den Webserver verschieben
Wenn Sie HTTPS verwenden wollen, benötigen Sie entweder einen Webserver mit einem gültigen Zertifikat (z. B. über letsencrypt beziehen) oder Sie können HTTP verwenden, da die Pakete sowieso schon signiert sind.
HTTPS
Wenn Sie eine eigene Zertifizierungsstelle (CA) verwenden, fügen Sie das Zertifikat ihrer CA zur Zertifikatsliste hinzu/usr/local/etc/ssl/cert.pem
Bei Verwendung des mit TwinCAT/BSD ausgelieferten nginx-Servers, fügen Sie die folgenden Zeilen weiter unten in der Datei /usr/local/etc/nginx/IPCDiagnostics.conf
unter den Bereich "Server {" hinzu:
location /pkg {
alias /var/db/myRepository/;
autoindex on;
}
Danach muss der Webserver mit doas service nginx restart
einmal neu gestartet werden, damit die Konfiguration aktiv wird. Hier liegen auch andere Seiten, die über den Webserver aufgerufen werden können.
HTTP
Falls Sie das Repository nur über HTTP bereitstellen wollen, lassen Sie den Webbrowser auf Port 80 lauschen und öffnen Sie den Port in der Firewall unter /etc/pf.conf
. Ergänzen Sie dafür folgende Zeilen in der Datei pf.conf
:
# allow port 80 for pkg repository
pass in quick proto tcp to port 80
Fügen Sie die folgenden Zeilen am Ende der Datei /usr/local/etc/nginx/IPCDiagnostics.conf
unter den Bereich "http {" hinzu:
server {
listen 80;
location /pkg {
alias /var/db/myRepository/;
autoindex on;
}
}
Danach muss der Webserver mit doas service nginx restart
einmal neu gestartet werden, damit die Konfiguration aktiv wird. Achten Sie darauf, dass dieser Eintrag noch von der äußersten Klammer der http-Funktion umschlossen ist. Mit diesem Eintrag sind weiterhin nur HTTPS-Zugriffe für alle von Beckhoff vorkonfigurierten Dienste zulässig, erlaubt aber als Ausnahme den Zugriff auf das eigene Repository über HTTP.
5. Öffentlichen Schlüssel an Zielrechner verteilen
Kopieren Sie den öffentlichen Schüssel myRSApublic.key
auf die Zielrechner, beispielsweise in das Verzeichnis /usr/share/keys
mit Hilfe von scp
.
6. Repository auf Zielrechnern verwenden
Das benutzerdefinierte Repository bzw. der interne Webserver kann jetzt auf den Zielrechnern als Ziel hinzufügt und aktiviert werden. TCBSD.conf ist das Standard Beckhoff-Repository und befindet sich im Verzeichnis unter /etc/pkg
. In der Datei befinden sich folgende Einträge.
TCBSD: {
url: https://tcbsd.beckhoff.com/TCBSD/14/stable/packages
enabled: true,
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/bhf-pkg"
}
Kopieren Sie im ersten Schritt die Datei TCBSD.conf
und benennen Sie die Datei um, beispielsweise in TCBSD_original
, damit die alle Änderungen schnell rückgängig gemacht werden können und wieder das Standard Beckhoff-Repository verwendet werden kann. Dieser Schritt ist nicht zwingend erforderlich und ist nur eine Sicherungsmaßname.
Passen Sie im nächsten Schritt die Datei TCBSD.conf
unter /etc/pkg
an, damit die Zielrechner zukünftig auf ihren eigenen Webserver zugreifen:
TCBSD: {
url: "http://my-webserver/pkg",
enabled: true,
signature_type: "pubkey",
pubkey: "/usr/share/keys/myRSApublic.key"
}
Beachten Sie die letzte Zeile, die den Pfad zum öffentlichen Schlüssel auf dem Zielrechner enthält, den Sie in Schritt 5 auf den Zielrechner kopiert haben. Passen Sie den Pfad gegebenenfalls an, wenn Sie einen anderen Speicherort verwenden.