Gut zu wissen: So funktioniert die Veröffentlichung einer Datei mit ZipDownloads
ZipDownloads verwaltet nicht nur Dateien zum Herunterladen. Vor der Veröffentlichung einer neuen Version kann das System ein Release auf Vollständigkeit, Integrität und technische Plausibilität prüfen. Dadurch soll verhindert werden, dass beschädigte, unvollständige oder nicht eindeutig prüfbare Dateien als produktive Downloads beziehungsweise Joomla-Updates veröffentlicht werden.
Vom Upload bis zur Veröffentlichung
Eine neue Datei wird in ZipDownloads zunächst einem bestehenden Download beziehungsweise Produkt zugeordnet. Für jede neue Version werden unter anderem die Versionsnummer, der Release-Status, die Edition und die eigentliche ZIP-Datei hinterlegt.
Eine neu hochgeladene Datei muss nicht sofort öffentlich verfügbar sein. ZipDownloads unterstützt einen Veröffentlichungsworkflow, bei dem ein Release zunächst vorbereitet und geprüft werden kann. Erst wenn die erforderlichen Prüfungen erfolgreich abgeschlossen wurden, sollte die Version veröffentlicht werden.
Typischer Ablauf:
Datei hochladen → Version anlegen → Release prüfen → Prüfergebnis auswerten → gegebenenfalls Fehler beheben → Version freigeben/veröffentlichen → optional als aktuelle Hauptversion festlegen
Damit wird die eigentliche Download-Datei von ihrem Veröffentlichungsstatus getrennt. Eine Datei kann also bereits auf dem Server vorhanden und vollständig geprüft sein, ohne schon öffentlich als aktuelle Version angeboten zu werden.
Die Release-Prüfung
Über „Release prüfen“ untersucht ZipDownloads die hinterlegte Versionsdatei.
Das Ergebnis wird verständlich zusammengefasst. Ein erfolgreich geprüftes Release kann beispielsweise als:
Grün – veröffentlichbar
gekennzeichnet werden.
Dabei unterscheidet ZipDownloads grundsätzlich zwischen echten Fehlern, Warnungen und Informationen.
ERROR bedeutet, dass ein Problem vorliegt, das eine sichere Veröffentlichung verhindern sollte.
WARN weist auf einen ungewöhnlichen oder nicht optimalen Zustand hin, der geprüft werden sollte, aber nicht zwangsläufig eine Veröffentlichung verhindert.
INFO dokumentiert normale Prüfergebnisse oder bewusst übersprungene optionale Prüfungen.
Diese Unterscheidung ist wichtig. Nicht jede fehlende Zusatzfunktion ist automatisch ein Sicherheitsfehler.
Was wird an einer Release-Datei geprüft?
Ein zentrales Element ist zunächst die eigentliche ZIP-Datei. Das Archiv muss lesbar und technisch verwendbar sein. Eine beschädigte oder nicht ordnungsgemäß verarbeitbare ZIP-Datei sollte nicht veröffentlicht werden.
Bei Joomla-Erweiterungen können darüber hinaus Paketstruktur und enthaltene Erweiterungsinformationen überprüft werden. Je nach Release werden beispielsweise Paket-, Komponenten-, Modul- oder Plugin-Dateien berücksichtigt.
Daneben verwendet ZipDownloads mehrere Integritätsmechanismen.
SHA-256
Für das Release wird eine SHA-256-Prüfsumme bestimmt.
Beispiel:
pkg_meineerweiterung_v1.2.0_joomla5-6.zip.sha256
Die Prüfsumme stellt einen eindeutigen Fingerabdruck der veröffentlichten ZIP-Datei dar.
Wird auch nur ein Byte der Datei verändert, stimmt die Prüfsumme nicht mehr.
SHA-512
Zusätzlich kann eine SHA-512-Prüfsumme verwendet werden:
pkg_meineerweiterung_v1.2.0_joomla5-6.zip.sha512
Damit stehen zwei voneinander unabhängige kryptografische Hashwerte zur Integritätskontrolle zur Verfügung.
Integritätsmanifest
Zu einem Release kann außerdem ein Integritätsmanifest gehören:
pkg_meineerweiterung_v1.2.0_joomla5-6.zip.integrity.json
Das Manifest beschreibt den geprüften Zustand des Releases. Dazu können beispielsweise gehören:
Dateiname
Version
Dateigröße
SHA-256
SHA-512
Signaturstatus
Dadurch besteht die Veröffentlichung nicht mehr nur aus einer ZIP-Datei, sondern aus einem nachvollziehbaren Integritätssatz.
Fehlende Integritätsdateien bei älteren Releases
Ältere Downloads wurden möglicherweise zu einem Zeitpunkt veröffentlicht, als SHA-Sidecars oder Integritätsmanifeste noch nicht verwendet wurden.
ZipDownloads kann solche bestehenden Releases nachträglich ergänzen.
Fehlen beispielsweise:
.sha256
.sha512
.integrity.json
können die Informationen aus der bereits gespeicherten Release-ZIP berechnet und erzeugt werden.
Dabei ist ein wichtiger Grundsatz:
Das eigentliche Release-ZIP wird nicht neu gepackt.
Dadurch bleibt die bereits veröffentlichte Datei unverändert und behält ihre ursprüngliche Prüfsumme.
Das ist insbesondere für ältere produktive Downloads wichtig.
OpenPGP ist optional
Eine zusätzliche Möglichkeit ist die kryptografische Herausgeber-Signatur mittels OpenPGP.
Eine signierte Version kann beispielsweise zusätzlich besitzen:
pkg_meineerweiterung_v1.2.0_joomla5-6.zip.asc
OpenPGP ist jedoch keine zwingende Voraussetzung für jedes Release.
ZipDownloads unterscheidet deshalb bewusst zwischen einem nicht signierten und einem signierten Release.
Nicht signiertes Release
Besitzt die Datei keine OpenPGP-Signatur und ist das Integritätsmanifest entsprechend als:
unsigned
gekennzeichnet, ist das ein zulässiger Zustand.
In diesem Fall ist die PHP-GnuPG-Erweiterung für die Prüfung nicht erforderlich.
Eine Prüfung sollte dann beispielsweise ergeben:
INFO: Release besitzt keine OpenPGP-Signatur.
INFO: OpenPGP-Prüfung übersprungen.
Das ist kein Fehler.
SHA-256, SHA-512 und das Integritätsmanifest können trotzdem vollständig geprüft werden.
Signiertes Release
Ist dagegen eine .asc- beziehungsweise Signaturdatei vorhanden oder wird das Release ausdrücklich als signiert geführt, muss die Signatur auch tatsächlich überprüft werden.
Ist dafür auf dem Server die erforderliche PHP-GnuPG-Unterstützung nicht verfügbar, ist ein Fehler gerechtfertigt.
Beispielsweise:
ERROR: OpenPGP-Signatur vorhanden,
PHP GnuPG extension ist jedoch nicht verfügbar.
Damit verhindert ZipDownloads, dass eine vorhandene Signatur nur scheinbar akzeptiert wird, obwohl sie technisch überhaupt nicht verifiziert werden konnte.
Was muss eine gute Release-Datei erfüllen?
Für eine produktive Veröffentlichung sollte eine Datei vor allem technisch unverändert, nachvollziehbar und reproduzierbar prüfbar sein.
Eine saubere Veröffentlichung sollte insbesondere folgende Eigenschaften besitzen:
- Die ZIP-Datei ist vollständig und nicht beschädigt.
- Dateiname und Versionsangabe passen zum vorgesehenen Release.
- Die Datei gehört zum richtigen Produkt beziehungsweise Download.
- Die kryptografischen Prüfsummen stimmen mit der gespeicherten Datei überein.
- Ein vorhandenes Integritätsmanifest passt exakt zur Release-Datei.
- Vorhandene Prüfsummendateien dürfen nicht von der tatsächlichen ZIP-Datei abweichen.
- Eine vorhandene OpenPGP-Signatur muss tatsächlich verifizierbar sein.
- Ein bewusst nicht signiertes Release muss eindeutig als
unsignedbehandelt werden. - Die eigentliche ZIP-Datei darf bei einer nachträglichen Erzeugung von Integritätsdaten nicht verändert werden.
- Echte Integritätsabweichungen dürfen nicht automatisch „repariert“ oder überschrieben werden.
Gerade der letzte Punkt ist wichtig: Eine fehlende Prüfsummendatei kann nachträglich erzeugt werden. Eine vorhandene, aber falsche Prüfsumme ist dagegen ein Hinweis auf eine mögliche Veränderung und muss als Problem behandelt werden.
Prüfung erfolgreich – was passiert danach?
Nach erfolgreicher Prüfung kann die Version in den Veröffentlichungsworkflow übernommen werden.
Eine neue Version kann zunächst vorbereitet und anschließend freigegeben werden. Dabei kann bereits vorgemerkt werden, dass diese Version nach ihrer Veröffentlichung die aktuelle Hauptversion des Downloads werden soll.
ZipDownloads unterscheidet dabei zwischen:
„Diese Version ist bereits die aktuelle Hauptversion“
und
„Diese Version soll bei der Veröffentlichung zur Hauptversion werden“.
Das verhindert, dass eine noch nicht veröffentlichte Version versehentlich vorzeitig als produktiver Hauptdownload angeboten wird.
Nach der Veröffentlichung kann ZipDownloads die bisherige Hauptversion zurücksetzen und die neue Version als aktuellen Hauptdownload übernehmen.
Warum ist diese Prüfung sinnvoll?
Ohne Integritätsprüfung könnte eine Datei zwar technisch heruntergeladen werden, es wäre aber schwieriger nachzuweisen, ob sie noch exakt dem ursprünglich freigegebenen Release entspricht.
Durch ZIP-Prüfung, SHA-256, SHA-512, Integritätsmanifest und optional OpenPGP entsteht eine nachvollziehbare Prüfkette:
Originale Release-Datei
↓
ZIP-Integrität
↓
SHA-256
↓
SHA-512
↓
Integritätsmanifest
↓
optional OpenPGP
↓
Release-Prüfung
↓
Freigabe
↓
Veröffentlichung
Damit wird die Veröffentlichung kontrollierter und Manipulationen oder beschädigte Dateien fallen wesentlich früher auf.
Wichtig zu wissen
Eine grüne Release-Prüfung bedeutet nicht einfach nur „ZIP kann geöffnet werden“. Sie bestätigt vielmehr, dass die von ZipDownloads für dieses Release verfügbaren Integritäts- und Veröffentlichungsprüfungen erfolgreich beziehungsweise zulässig abgeschlossen wurden.
Ebenso wichtig:
OpenPGP ist eine zusätzliche Sicherheitsstufe, keine Pflicht für jedes Release.
Ein korrekt gekennzeichnetes unsigned Release kann daher vollkommen ordnungsgemäß veröffentlicht werden. Es besitzt dann weiterhin ZIP-Integritätsprüfung, SHA-256, SHA-512 und Integritätsmanifest – lediglich die zusätzliche kryptografische Herausgeber-Signatur fehlt.
So lässt sich ZipDownloads sowohl für einfache Downloads als auch für stärker abgesicherte Joomla-Releases mit vollständiger Supply-Chain-Prüfung verwenden.










