FHEMWEB - attr WEB HTTPS <0|1> bringt fhem zum Absturz

Begonnen von betateilchen, 09 Mai 2014, 17:06:32

Vorheriges Thema - Nächstes Thema

betateilchen

Ich versuche gerade, die https-Verbindung zu FHEMWEB einzurichten. Die perl SSL Module sind vorhanden.

Sobald versucht wird, das Attribut HTTPS zu setzen, stürzt fhem komplett ab.

Can't locate object method "pending" via package "IO::Socket::INET" at ./FHEM/01_FHEMWEB.pm line 283.

Es ist dabei völlig egal, ob man das Attribut auf 0 oder auf 1 setzen will. Da bei den ersten Versuchen das Setzen auf 1 bereits scheiterte, hatte ich den Plan, das Attribut auf 0 zu setzen und die Konfiguration zu speichern, um das Attribut überhaupt schon einmal in der Konfiguration stehen zu haben. Leider vergeblich - sobald das Attribut verwendet werden soll, kommt es zum Absturz.



-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

*grübel* das ist echt schräg...


  • attr WEB comment 1
  • save config
  • shutdown
  • sqlite3 configDB.db
  • update fhemconfig set p1 = 'HTTPS' where device='WEB' and p1='comment';
  • fhem neustarten
  • schon klappts auch mit https

Die Ursache für das Problem scheint also in FHEMWEB selbst zu liegen, sobald man dort das Attribut anspricht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Wie kann man eigentlich fhem per https mit "richtigen" SSL-Zertifikaten nutzen?

Ich habe gültige Zertifikate für meine Apache Server, aber die sind offenbar in einem anderen Format als die Zertifikatsdateien, mit denen fhem zurechtkommt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Das Problem trat auf, wenn man auf der aktuellen Verbindung das Attribut HTTPS gesetzt hat. Das ist keine so tolle Idee, weil der Browser es weiterhin mit HTTP versucht, waehrend FHEM schon HTTPS erwartet, was dann zu Fehlermeldungen fuehrt.
Ich habe das bisher instinktiv vermieden, und fuer HTTPS immer eine neue WEB Instanz angelegt, deswegen fiel es mir auch nicht auf.

Ich pruefe jetzt mit can() ab, ob die Funktion pending existiert, was bei mir den FHEM Absturz vermeidet. Hab leider nicht rausgefunden, ab welcher Perl Version "can()" gibt, auf dem Fritzbox 7390 mit seinem relativ alten 5.12 gibt es damit keine Probleme. Habe die Aenderung eingecheckt.

@betateilchen: bekommst du eine Fehlermeldung? Eine kurze Anleitung fuer "falsche" Zertifikate steht in commandref, "richtige" Zertifikate habe ich leider keine. Irgendwie musst du deine "richtigen" in das "falsche" Format konvertieren :) Da das nicht FHEM spezifisch ist, muesste im Web dazu mehr stehen.

betateilchen

Hallo Rudi,

ZitatDas Problem trat auf, wenn man auf der aktuellen Verbindung das Attribut HTTPS gesetzt hat.

Das Problem trat auch auf, wenn man das Attribut auf 0 setzen wollte - das ist für mich ziemlich unlogisch, da ich bei 0 davon ausgehe, dass HTTPS auch weiterhin nicht verwendet wird. Offenbar prüft die AttrFn aber überhaupt nicht, welcher Wert gesetzt werden soll.

Zitat@betateilchen: bekommst du eine Fehlermeldung? Eine kurze Anleitung fuer "falsche" Zertifikate steht in commandref,

Die Anleitung für selbsterstellte Zertifikate kenne ich. Funktioniert, führt aber eben immer zum Hinweis, dass das Zertifiktat nicht von einer vertrauenswürdigen Stelle stammt. Das mit dem Konvertieren der Zertifikate habe ich im Internet schon gesucht - aber bisher keine Lösung gefunden.

Kann man fhem nicht irgendwie direkt in einen Apache einbinden? (mod_proxy funktioniert auch nicht mit HTTPS und echten Zertifikaten)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

So funktioniert die Konvertierung:


openssl pkcs12 -export -in cubie_betateilchen_de.crt -inkey server.key -out hostname.p12
openssl pkcs12 -in hostname.p12 -nodes -out server-cert.pem
openssl rsa -in server.key -out server-key.pem -outform PEM


funktioniert fast...

(http://up.picr.de/18239779vi.png)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Safari ist übrigens nicht so pedantisch bei der Auswertung von SSL-Zertifikaten...

(http://up.picr.de/18239808me.png)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Keine Ahnung wieso - aber jetzt funktioniert es plötzlich auch in Chrome ohne Gemecker:

(http://up.picr.de/18239984hm.png)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Hallo Rudi,

Zitat von: betateilchen am 10 Mai 2014, 12:53:05
Kann man fhem nicht irgendwie direkt in einen Apache einbinden? (mod_proxy funktioniert auch nicht mit HTTPS und echten Zertifikaten)

doch, proxy mit SSL funktioniert auch, man muss aber die SSLProxyEngine aktivieren:


<Proxy *>
  Allow from 127.0.0.1
</Proxy>

SSLProxyEngine On
ProxyPass        /fhem  https://localhost:8083/fhem
ProxyPassReverse /fhem  https://localhost:8083/fhem


Vielleicht kannst Du das bei Gelegenheit in den Abschnitt im HowTo einbauen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

HOWTO.html wuerde ich gerne durch das Wiki abgeloest sehen, da ich keine gute Begruendung dafuer habe, was ins HOWTO gehoert.

betateilchen

Begründung? Ganz einfach:

Im HowTo finde ich Informationen zehnmal schneller als im Wiki. Das ist für mich Grund genug, erstmal in das HowTo zu schauen, da steht nämlich alles wirklich wichtige auf einer einzigen Browserseite, womit ich direkt in dieser Seite per Browsersuchfunktion meine Information finde und mich nicht durch völlig unlogische Wiki-Strukturen hangeln muss.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TheTrumpeter

Sorry, dass ich diesen uralten Thread wieder hervorhole...

Ich habe vor 2 Tagen mal wieder ein "update" durchgeführt. (Das letzte davor war am 04.03.2018.)
Seitdem hatte ich 2x "Can't locate object method "pending" via package "IO::Socket::INET" at fhem.pl line 660." im Log, ohne Zeitstempel oder sonstiger Angabe. Der nächste Eintrag ist jeweils ein FHEM-Neustart ohne vorherigem sauberen Shutdown.

Davor hatte ich das noch nie (seit Ende 2016), geändert habe ich an der Konfiguration schon lange nichts relevantes mehr.

Seit dem Update startet mein Raspberry übrigens auch häufig "von selbst" neu. Woran das liegt habe ich noch nicht erforscht.

Irgendwelche Ideen?
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

JoWiemann

Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

MadMax-FHEM

FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

TheTrumpeter

Danke.
Hätte ich wohl die Forumssuche bemühen sollen und nicht dem Google-Treffer vertrauen sollen  :-[
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110