Forum: Mikrocontroller und Digitale Elektronik Fileserver für OTA ESP8266


von Tobias W. (hacker-tobi)


Lesenswert?

Hi,

wie einige vielleicht mitbekommen haben, arbeite ich seit einiger Zeit 
an dem Projekt TOISWITCH, das ich auch hier vorgestellt habe:

Beitrag "TOISWITCH - IoT I/O-Server für ESP8266"

Ich suche nun nach einer Möglichkeit, das OTA von meinem lokalen 
Fileserver auf einen Fileserver im Internet zu verlagen, damit auch 
andere Nutzer einfach ein Update durchführen können.

Hat jemand von euch Erfahrungen damit, welche Filehoster sich hier 
anbieten?

Im wesentlichen benötige ich eine direkte gleichbleibende Download-URL 
zur jeweils aktuellsten Version der webserver.bin - Datei.
Der Download sollte zusätzlich noch per SSL gesichert sein, ohne 
Client-Authentication. Aber das ist ja mittlerweile Standard.

Derzeit ist das Projekt bei Sourceforge gehostet.
Dort gibt es zwar direkte Downloadlinks, allerdings sind diese mit einem 
Token versehen, das sich imHo mit neuer Dateiversion ändert (oder ändern 
kann). Zudem sind die Links scheinbar derart lang, das sich die ESP8266 
OTA implementierung gern mal dran verschluckt und dann direkt beim OTA 
INIT mit Kernel Panic neustartet.
Von meinem persönlichen Server im LAN und auch testweise von 
Mikrocontroller.net funktioniert es hingegen ohne Probleme.

Any Ideas?

Und noch etwas: Wie verhält sich die OTA-Funktion des Espressif IDF, 
wenn das Zertifikat wegen Ablauf ausgetauscht wurde? Hat da jemand 
Erfahrung?

gruß

tobi

von Tobias W. (hacker-tobi)


Lesenswert?

Noch eine Anmerkung: ich verwende keine Google-Services, Google Docs 
oder Code ist also keine Option.

von Stefan F. (Gast)


Lesenswert?

Tobias W. schrieb:
> Ich suche nun nach einer Möglichkeit, das OTA von meinem lokalen
> Fileserver auf einen Fileserver im Internet zu verlagen, damit auch
> andere Nutzer einfach ein Update durchführen können

Ganz ehrlich: Security technisch ist dass ein No-Go.

Ich habe schon jedes mal Schiss wenn ich meinen Fernseher übers Internet 
update. Aber so ein ESP8266 hat keine Sicherheit gegen Missbrauch durch 
Men-In-The-Middle. Ich würde das nicht tun.

> Der Download sollte zusätzlich noch per SSL gesichert sein, ohne
> Client-Authentication. Aber das ist ja mittlerweile Standard.

Da fängt es aber schon an. SSL ist nur mit Zertifikaten sicher, die man 
bei Bedarf widerrufen kann. Die dazu nötige Infrastruktur fehlt dem ESP 
komplett.

von Olaf (Gast)


Lesenswert?

> Ganz ehrlich: Security technisch ist dass ein No-Go.

Das habe ich gerade auch so gedacht. :-D

Aber wisst ihr was noch 10x schlimmer ist? Die Vorstellung das
es normal, noetig und wichtig ist andauernd die Firmware von
irgendwelchen Geraeten upzudaten.

Man baut Hardware so das sie in der Regel problemlos und gut
funktioniert. In seltenen Ausnahmefaellen kann man dann auch mal
die Firmware updaten. Und weil das selten ist, kann man auch damit
leben wenn das mit etwas Aufwand verbunden ist.

Man sollte sich nicht an Software gewoehnen die so schludrig zusammen
gehustet ist das man dreimal im Jahr ein Update braucht.

Olaf

von Stefan F. (Gast)


Lesenswert?

Olaf schrieb:
> Man sollte sich nicht an Software gewoehnen die so schludrig zusammen
> gehustet ist das man dreimal im Jahr ein Update braucht.

Leider habe ich beim Smart TV kaum eine andere Wahl. Wenn z.B. Netflix 
nur einen Black Screen zeigt, dann fordern die mich zuerst zu upgrade 
auf, vorher reden die gar nicht mir mir.

Habe ich gemacht, immer noch Black screen. Am nächsten Tag war der 
Fehler verschwunden.

Dafür zickt jetzt die Bluetooth Verbindung zu den Lautsprechern. Ich 
muss sie jetzt nach jedem Einschalten manuell aufbauen, mit ca. 15 
Tastendrücken auf der Fernbedienung - sehr nervig. Auf analoge Kabel 
kann ich nicht ausweichen, weil der TV keinen analogen Ausgang hat 
(WTF?). Auf das optische Kabel kann ich auch nicht ausweichen, weil die 
Lautsprecher keinen solchen Eingang haben. Ich habe mir einen Adapter 
(optisch -> analog) besorgt, aber dann bemerkt, dass die 
Lautstärke-Tasten der Fernbedienung nicht auf den optischen Ausgang 
wirken (WTF?).

Und das alles nur wegen Netflix.

Ein Zurück gibt es nicht. Ich liebe Samsung ............ nicht

von hacker-tobi@gmx.net (Gast)


Lesenswert?

Gerade ob der Sicherheit arbeite ich mit SSL und prüfe das Server 
Zertifikat und das update selbst.
Damit werden MITM Attacken schon erheblich erschwert.

Und sorry, meine Frage bezog sich auch nicht auf Probleme mit anderen 
Geräten. Bitte diskutiert diese ggf. in einem anderen thread.

Meine Software befindet sich in laufender Weiterentwicklung wie andere 
home Projekte in diesem Bereich auch (z.B. Tasmota). Daher möchte ich 
eine einfache Update Möglichkeit geben. Eine andere Variante wäre z.B. 
ein update per lokalem file upload . Hätte da jemand evtl. ein Beispiel 
für mich?

von Andre (Gast)


Lesenswert?

Tobias W. schrieb:
> er Download sollte zusätzlich noch per SSL gesichert sein, ohne
> Client-Authentication. Aber das ist ja mittlerweile Standard.

Das entschärft doch das Sicherheits-Problem deutlich. Bau dir deine 
eigene PKI, der ESP8266 akzeptiert dann nur Verbindungen zu deinem 
Server.
Wenn sich ein Hacker selber was mit Letsencrypt & Co nachbaut, wird die 
Verbindung direkt abgelehnt. Das erfordert aber Einarbeitung, ein 
simpler Webhoster mit Standard HTTPS reicht nicht!

Du wirst dann einen eigenen Webserver brauchen, der nur mit deiner PKI 
arbeitet. Aber das ist gar nicht verkehrt, damit hast du vollen Zugriff 
auf die HTTP Header, falls du damit eine Versions-Unterscheidung machen 
willst.

Das heißt also, vServer mieten. Oder wenn es "nichts" kosten soll, bei 
uberspace einen Server mieten und einen eigenen Webserver-Prozess durch 
deren Firewall raus reichen. Dann brauchst du aber eine zusätzliche 
Infrastruktur, die den ESP auf den "krummen" Firewall Port schubst, weil 
der sich ggf. mal ändern könnte.

von hacker-tobi@gmx.net (Gast)


Lesenswert?

Hi Andre,

danke dafür. Über eine eigene PKI habe ich auch schon nachgedacht. Ich 
weiß aber noch nicht, ob ich das umsetzen werde. Schließlich handelt es 
sich um ein reines homebrew Projekt ohne kommerzielle Absichten, da 
sollte der Aufwand im Rahmen bleiben. So möchtr ich z.b. keinen eigenen 
Server hochziehen müssen. Daher wäre es für mich momentan ausreichend, 
das Server Zertifikat zu verifizieren.

Daher bitte ich weiter um Vorschläge für Filehosting Anbieter, welche 
feste download links und SSL anbieten. Gern auch mit der Option eine 
eigene PKI zu nutzen oder alternativ um Ideen wie sich ein lokaler file 
upload umsetzen lässt.

Und eine Frage an tasmota/elecpow/... Nutzer: wie ist das update dort 
gelöst? Via lokalem file upload oder via OTA?

von Stefan F. (Gast)


Lesenswert?

hacker-tobi@gmx.net schrieb:
> Schließlich handelt es sich um ein reines homebrew Projekt

Ich nutze gerne die ESP-01 Module weil ich sie zum Upgrade einfach 
heraus nehmen kann um sie mittels USB Adapter an den Laptop zu stecken. 
Meine wenigen Projekte mit ESP-12 Modul haben einen "Flash"-Taster und 
drei Stifte, an die ich mein USB-UART Adapterkabel stecke. Beides finde 
ich durchaus praktikabel.

von hacker-tobi@gmx.net (Gast)


Lesenswert?

Hallo Stefan,

das ist für mich nicht praktikabel, da es durchweg um fest verbaute 
Module geht, welche z.b. in fest verklebten LED Lampen sitzen.
Daher die Frage nach Anbietern die ich für die Ablage von OTA files 
nutzen kann oder alternativ wie ich einen file upload via web interface 
realisieren kann.
Nur zur Klarstellung : OTA ist in der Software aktuell bereits 
implementiert, nur eben mit einem lokalen Server. Das ist für mich OK, 
andere Benutzer können diesen Server aber nunmal nicht nutzen.

I am sorry, aber ich bin ein wenig genervt. Bis jetzt war nur eine 
Antwort dabei, die sich mit meiner konkreten Frage beschäftigt hat.

von Mario M. (thelonging)


Lesenswert?

Probiere mal:
1
#define OTA_SERVER_URL "https://netcologne.dl.sourceforge.net/project/toiswitch/Software/build/webserver.bin"

von gerFG (Gast)


Lesenswert?

hacker-tobi@gmx.net schrieb:
> I am sorry, aber ich bin ein wenig genervt. Bis jetzt war nur eine
> Antwort dabei, die sich mit meiner konkreten Frage beschäftigt hat.

Das ist hier leider immer mehr so, die wenigsten Antworten
drehen sich um die eigentliche einfache (An-)Fragen.
Aber mehr oder weniger gute ungefragte Ratschläge
(meist auch noch OT) kommen da immer... :-(

Im Prinzip reicht doch jede Webspace, die quasi
"Unlimited TRAFFIC" = download ermöglicht.

Das könnte ja sogar ein freigegebener USB-Stick an Deiner
eigenen FRITZ!Box per Dynamisches DNS und Let’s Encrypt
sein.
Oder eben die kleinsten Webspaces, z.B. so etwas,
classic 1.0:
https://wint.global//linux-hosting-pakete-plesk/

Um "Hochverfügbarkeit" wird es da ja nicht gehen, oder?

von hacker-tobi@gmx.net (Gast)


Lesenswert?

Ich hab mir das mal bei tasmota angeschaut.

Dort wird für OTA mit http ohne SSL gearbeitet. Das ist zwar einfach zu 
implementieren aber zu unsicher für meine Begriffe.
Alternativ gibt es noch den file upload über das web interface. Hat das 
schon mal jemand mit dem espressif IDF ohne arduino gebaut? Das werd ich 
mir mal ansehen und evtl selber bauen.

Ansonsten bin ich nachwievor für Vorschläge zu filehostern dankbar.

von gerFG (Gast)


Lesenswert?

Mario M. schrieb:
> #define OTA_SERVER_URL "https://netcologne.dl.sourceforge.net...

sourceforge nutzt z.B. Load Balancer und gleicht auch seine
Server nicht gleichzeitig sofort ab (wie auch...), da
gab es schon in anderen Projekte Probleme, wenn auf einen
direkten speziellen Downloadserver (per "hardcode") von
sourceforge verlinkt wurde ((Nicht-)Erreichbarkeit,
unterschiedliche Versionsstände...).

von hacker-tobi (Gast)


Lesenswert?

@gerFG: das hilft mir weiter. Danke für den link zu wint.global. das 
muss ich mir mal ansehen könnte das sein was ich suche!

von hacker-tobi (Gast)


Lesenswert?

@Mario: Deinen Beitrag mit dem Linki hatte ich übersehen.

Auch um Dokus etc ablegen zu können, habe ich mir jetzt mal eine Domain 
bestellt. Trotzdem werde ich auch probieren, was passiert, wenn ich den 
Link für OTA nutze.

Danke!

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

hacker-tobi schrieb:

> Hat das schon mal jemand mit dem espressif IDF ohne arduino gebaut?

Das Projekt WordClock mit WS2812 (STM32 mit ESP8266 als 
"WLAN-Coprozessor") unterstützt sowohl OTA (Server steht bei Hetzner) 
als auch local File-Upload per Webbrowser, um sowohl den ESP8266 als 
auch den angeschlossenen STM32 zu flashen. Allerdings ist der ESP8266 
mit der Arduino-IDE programmiert, nicht mit dem espressif IDF.

Sources: https://github.com/ukw100/wordclock24h

Speziell für ESP8266: 
https://github.com/ukw100/wordclock24h/tree/main/ESP8266/ESP-WordClock

(nein, es wird nicht SSL verwendet)

: Bearbeitet durch Moderator
von hacker-tobi (Gast)


Lesenswert?

Hi,

ich habe mittlerweile eine Domain bei wint.global aufgezogen.

Der Link für OTA wurde angepasst, das File ist unter 
http://toiswitch.de/webserver.bin verfügbar!
Die Domain selbst werde ich auch noch mit Leben füllen.

Danke für alle produktiven Antworten!

gruß

tobi

von hacker-tobi (Gast)


Lesenswert?

Korrektur, der Link ist natürlich

https://toiswitch.de/webserver.bin

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.