Autoupdates für eigene Firefox-Extensions

Was haben sich die Jungs von Mozilla eigentlich gedacht, als sie die Auto-Update-Funktion für Firefox-Extensions designed haben?! Unentschieden

Was mich aufregt und wie ich es trotzdem hinbekommen habe? Lest einfach weiter...

Die ganze Sache ist eigentlich gut beschrieben:

Im xpi-Paket liegt eine Datei "install.rdf" herum, in der man eine URL zum Abrufen von Updates angeben kann.

Hinter dieser URL sollte eine Datei "update.rdf" liegen, welche wiederum für jede bekannte Version der eigenen Extension einen Eintrag hat.
Dieser Eintrag besteht neben der Versionsnummer auch aus einer URL, wo man diese Version des Paket bekommen kann.
Wenn man jetzt also einen neue Version hat, lädt man diese hoch und ergänzt die "update.rdf" um einen passenden Eintrag. Beim nächsten Check durch Firefox wird die Datei abgerufen und der User bekommt die Information, dass eine neue Version vorhanden ist.

Okay... das wäre jetzt zu einfach. Da Extensions direkten Zugriff auf den Browser und den lokalen Rechner haben, hat man sich bei Mozilla zum Glück gedacht: das sollte man schützen!

Also sagte man sich bei Mozilla: wenn der Transportweg okay ist, dann kann ich den Kram installieren. Dazu muss man in der update.rdf eine Checksumme für das neue Paket angeben und HTTPS für die URL nutzen.

Ausschnitt aus der update.rdf

Mach ich doch glatt! Einfach ein Zertifikat erstellen, https als Protokoll in install.rdf und update.rdf angeben und: NIX.
Hmmm... nachdem ich dann mit ein paar Tricks endlich eine Fehlermeldung bekomme bin ich geschockt:

Mein Zertifikat ist  nicht gut genug. Es reicht nicht, dass Zertifikat durch den User zu akzeptieren - nein die Mozilla-Entwickler verlangen, dass sich das Zertifikat auf eines der Rootzertifikate bezieht, welche einkompiliert sind! Schreien Einkompilierte Listen von Zertifikaten?! Wo sind wir denn?

Da ich das Geld für ein "richtiges" Zertifikat scheue, habe ich weitergesucht und bin auf eine zweite Variante gestoßen:

Man kann in den Dateien digitale Signaturen und den Public Key hinterlassen um eine Authentifizierung ohne Root-Zertifikat zu erreichen.

Hauptansicht von McCoy

Jetzt muss ich aber jedes Mal sowohl die install.rdf als auch die update.rdf signieren, da die Install.rdf sich mit jeder neuen Version ändern und neue Versionen einen eigenen Eintrag in der update.rdf nach sich ziehen.

Das nervt insbesondere, weil das dazu zu nutzende Programm "McCoy" den Inhalt der Dateien ändert. Ich habe jetzt eine lesbare Version der Dateien, kopiere diese, signiere sie und benenne die dann um.
*seufz* ich habe jetzt genug Übung und finde mich damit ab. Schöner wäre es gewesen, wenn ich einfach den Transportweg als vertrauenswürdig akzeptieren könnte.

Auswahl einer Datei zum Signieren

This article was updated on 12 April 2009