solectrus / hosting

Step-by-stypes guides for installing and hosting Solectrus
9 stars 4 forks source link

Unterstützung für SSL (https) #21

Closed ledermann closed 5 months ago

ledermann commented 1 year ago

Aus #20 von @noffycws:

Nun habe ich aber noch ein anderes Problem: Wenn ich Force-SSL auf true setze, dann kommt es zu einem Fehler: HTTP parse error, malformed request: #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Are you trying to open an SSL connection to a non-SSL Puma?>

Gibt es vielleicht noch eine Anleitung, wie ich die APP unter SSL laufen kann? Damit kann ich das in meine Haussteuerung integrieren und dort die Solaranlage schön anzeigen lassen.

Die Umgebungsvariable FORCE_SSL ist zugegebenermaßen etwas missverständlich. Sie sorgt u.a. dafür, dass die App nur noch auf https reagiert und etwaige http-Requests nach https weitergeleitet werden. Sie sorgt aber nicht dafür, dass die App auch wirklich https-fähig wird.

SOLECTRUS kann derzeitig nicht selbst mit SSL-Zertifikaten umgehen, den hierfür notwendigen Aufwand habe ich mir bislang gespart. Für meine eigene Installation (siehe https://solectrus.ledermann.dev) nutze ich Traefik und Let’s Encrypt.

Denkbar wäre aber, dass ich SOLECTRUS so erweitere, dass man ein SSL-Zertikat (*.crt) mitsamt Keyfile (*.key) angeben kann und dann https möglich wird. Man muss dann natürlich immer noch ein Zertifikat besorgen oder ein selbst-ausgestelltes benutzen.

Was genau ist denn Dein Anwendungsfall? Mir ist nicht ganz klar, warum https für die Integration in die Haussteuerung erforderlich sein soll.

ledermann commented 1 year ago

@noffycws Besteht der Bedarf nach direkter https-Unterstützung weiterhin?

noffycws commented 1 year ago

Hallo, gerne kurz zu meinem "Smarthome" Szenario: Ich habe ein Dashboard über iobroker zu verschiedenen Funktionen in meinem Smarthome. Hierzu binde ich auch externe Webseiten mittels iFrame ein. Da die Seiten alle unter SSL laufen, mag iFrame nicht, wenn ich reine HTTP-Seiten ansteuere. Heißt: Der Inhalt wird nicht angezeigt.

Wenn ich bei der iFrame-Quelle SSL aktiviere, dann funktioniert die Anzeige.

Eine SSL-Unterstützung könnte aber auch anderweitig interessant sein: Wenn ich die SOLECTRUS-Anzeige bspw. von extern erreichbar machen will, dann bietet SSL zumindest eine gewisse Vertraulichkeit. Zertifikate kann man sich dann ja über Let's encrypt holen. Ich bin da zwar kein Experte, aber moderne Webseiten sollten immer auch die Möglichkeit haben SSL/TLS zu unterstützen.

ledermann commented 1 year ago

Ok, verstehe, die Einbindung als iFrame ist ein nachvollziehbares Argument.

Dass natürlich jede Website, die öffentlich erreichbar ist, https liefern sollte, ist klar :-) Die Frage ist nur, ob das Zertifikate-Handling von der App selbst gemacht werden muss oder ob man das auslagert, z.B. an einen vorgeschalteten Reverse-Proxy. Bei meinen Websites mache ich es immer so, dass sie hinter Traefik laufen, der sich um Let’s Encrypt kümmert, was man wegen der kurzen Zertifikatslaufzeiten ja nicht manuell machen möchte.

Was relativ leicht in SOLECTRUS ergänzt werden könnte, ist die Unterstützung für eigene Zertifikate. Man gibt dann einfach ein SSL-Zertikat (.crt) mitsamt Keyfile (.key) an und erhält dann https. Das würde funktionieren für selbst erstellte oder gekaufte Zertifikate, aber nicht für Let's Encrypt.

hubecker commented 1 year ago

Seit 28.8 gibt es eine neue Firmware, die nur noch https unterstützt. Wenn man beim connect ein SSL_verify_mode => SSL_VERIFY_NONE (Beispiel in Perl) mit gibt funktioniert es weiterhin. Auch ohne SSL-Zertikat!. Mit http funktioniert solectrus dann gar nicht mehr Bitte um Umstellung.

ledermann commented 1 year ago

@hubecker Hier in diesem Issue geht es darum, dass SOLECTRUS selbst über https erreichbar sein sollte, das hat mit dem derzeitig von SENEC ausgerollten Firmware-Update nichts zu tun. Ich weiß, das ist verwirrend :)

Das notwendige Update für die Unterstützung der neuen SENEC-Firmware steht bereit, bitte hier lesen:

hubecker commented 1 year ago

Ok, danke das habe ich getan und mein solectrus funktioniert wieder.