Hallo,
ich habe gerade versucht, meinen Webserver von Siemens OZW772 mit der Anleitung http://forum.fhem.de/index.php/topic,33765.0.html (http://forum.fhem.de/index.php/topic,33765.0.html) in meinen fhem einzubinden.
Ich komme mit meinem Browser auch wie angegeben zu den Datenpunkten.
Allerdings become ich keine Daten, nur die folgende Fehlermeldung in fhem:
2015.10.29 00:00:58 3: ozw772: Read callback: request type was Update, no headers, buffer empty,
Error https://192.168.0.103/api/auth/login.json?user=Administrator&pwd=Triniti_: Can't connect(2) to https://192.168.0.103:443: SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Wie gesagt, mit dem Browser funktioniert alles.
Weiß jemand Rat?
Warum kann sich fhem nicht mit meinem ozw772 verbinden?
Vielen Dank im Voraus
liebe Grüße
Gerhard
Schau Dir mal das global attribut sslVersion an. Ansonsten könntest Du versuchen die Prüfung auszuschalten (Stichwort PERL_LWP_SSL_VERIFY_HOSTNAME), wäre aber mehr als unschön.
Das attribut sslVersion ist bei mir "1".
Auf welchen Wert sollte das den dann gesetzt werden?
Danke im Voraus
lg, Gerhard
1 ist zumindest falsch, schau bitte selbst in die commandref.
Ich denke nicht, dass es ein Problem der sslVersion ist.
Es scheint eher ein Zertifikat-Problem des Webservers ozw772 von Siemens zu sein.
Die Fehlermeldung lautet ja auch: ... SSL3_GET_SERVER_CERTIFICATE:certificate verify failed SSL connect attempt failed error:14090086
Auch wenn ich mit einem Browser die Startseite öffne, kommt zuerst mal eine Meldung bzgl. eines fehlerhaften Zertifikats.
Ich kann das aber am ow772 nicht ändern.
Wie kann ich das im fhem lösen?
lg, Gerhard
Zitat von: gestein am 29 Oktober 2015, 23:49:40
Ich denke nicht, dass es ein Problem der sslVersion ist.
Denkst Du das nur oder hast Du SSLv23:!SSLv3:!SSLv2 als kryptographische Algorithmen mal eingetragen, so wie in der commandref steht?
Zitat von: gestein am 29 Oktober 2015, 23:49:40
Auch wenn ich mit einem Browser die Startseite öffne, kommt zuerst mal eine Meldung bzgl. eines fehlerhaften Zertifikats.
Das las sich im ersten Betrag noch anders. Egal...
Wenn ich nach der Perl Fehlermeldung suche (https://www.google.de/search?q=SSL+connect+attempt+failed+error:14090086:SSL+routines:SSL3_GET_SERVER_CERTIFICATE:certificate+verify+failed+SSL+connect+attempt+failed+error:14090086:SSL&ie=utf-8&oe=utf-8&gws_rd=cr&ei=me0yVq7wHeaZygPCuKLYDA), dann bekomme ich sofort Treffer, die sagen, dass man zur Not mit der Umgebungsvariable PERL_LWP_SSL_VERIFY_HOSTNAME die Prüfung abschalten kann.
Eine kurze Forumssuche hat diesen (http://forum.fhem.de/index.php?topic=32866.0) Beitrag geliefert, dort wird auch die Umgebungsvariable gesetzt. Hilft dir das weiter?
Danke.
Es ist manchmal ziemlich schwer, als Newbie die Zusammenhänge zu verstehen.
Wenn man im Browser die Zertifikate-Meldung wegklickt, geht es ja ;-) Sorry.
Aber auch das Ausschalten der Überprüfung stellt für einen Newbie eine Herausforderung dar.
Soweit ich das verstanden habe, muss ich im Perl-Modul 98_HTTPMOD.pm folgendes einfügen:
# Beware: we disable the SSL certificate check for this script.
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0
Über meine Suche habe ich übrigens den folgenden Beitrag gefunden:
http://forum.fhem.de/index.php/topic,41957.0.html (http://forum.fhem.de/index.php/topic,41957.0.html)
Das ist zwar für das ozw672, soll angeblich aber auch für das ozw772 funktionieren.
Danke für Deine Hilfe
Gerhard
Zitat von: gestein am 30 Oktober 2015, 09:56:23
Soweit ich das verstanden habe, muss ich im Perl-Modul 98_HTTPMOD.pm folgendes einfügen:
# Beware: we disable the SSL certificate check for this script.
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0
Genau. Wenn das das Problem löst, dann wäre es gut, wenn du das in der Rubrik Sonstiges (laut: http://www.fhem.de/MAINTAINER.txt) schreibst und den Maintainer des Modul bittest das ggf. in das Modul einzubauen, damit mit man in solchen Fallen die Prüfung abschalten kann.
Zitat von: dev0 am 30 Oktober 2015, 10:40:00und den Maintainer des Modul bittest das ggf. in das Modul einzubauen, damit mit man in solchen Fallen die Prüfung abschalten kann.
Wobei es hier Sinn macht das ganze über den HttpUtils Hash und den dazu passenden Paramter zu lösen als global $ENV zu setzen:
$param->{sslargs} = { SSL_verify_mode => 'SSL_VERIFY_NONE' };
Da hast Du sicherlich recht rapster, aber das sollte stefanstrobel einbauen, wenn es sich wirklich um das Problem handelt. Hier in Anfängerbereich wollte ich das bewusst einfach halten, da Gerhard es als Anfänger hier eh schon nicht einfach hat und es erstmal umsetzen muss um es testen...
Aber gut, dass du das erwähnst.
Hallo,
entweder ich mache etwas falsch oder es hilft nicht.
Das Attribut sslVersion war bei mir nicht gesetzt.
Also habe ich es auf SSLv23:!SSLv3:!SSLv2 gesetzt.
Ändert nichts.
Aber heißt das nicht, SSLv3 nicht erlaubt ist?
Ich habe es auch geschafft, die folgenden Zeilen in die Datei 98_HTTPMOD.pm einzubauen
# Beware: we disable the SSL certificate check for this script.
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0;
Wobei ich sicher bin, dass ich die richtige Datei erwischt habe, da eine Fehlermeldung kommt, wenn ich ";" weglasse.
Ich habe es direkt nach dem "use"-Block eingebaut.
Aber es ändert auch nichts.
Ich bekomme immer die Fehlermeldungen:
2015.10.31 22:45:32 4: ozw772: GetUpdate called (update)
2015.10.31 22:45:32 5: ozw772: internal interval timer set to call GetUpdate again in 300 seconds
2015.10.31 22:45:32 5: ozw772: AddToQueue called, initial send queue length : 0
2015.10.31 22:45:32 5: ozw772: AddToQueue adds type Update to URL https://192.168.0.103/api/auth/login.json?user=Administrator&pwd=Triniti_, data , header
2015.10.31 22:45:32 5: ozw772: HandleSendQueue called, qlen = 1
2015.10.31 22:45:32 4: ozw772: HandleSendQueue sends request type Update to URL https://192.168.0.103/api/auth/login.json?user=Administrator&pwd=Triniti_, data , header , timeout 2
2015.10.31 22:45:32 4: HttpUtils url=https://192.168.0.103/api/auth/login.json?user=Administrator&pwd=Triniti_
2015.10.31 22:45:32 5: ozw772: GetUpdate checks if poll required for Aussentemperatur (1)
2015.10.31 22:45:32 5: ozw772: GetUpdate will request Aussentemperatur
2015.10.31 22:45:32 5: ozw772: AddToQueue called, initial send queue length : 0
2015.10.31 22:45:32 5: ozw772: AddToQueue adds type Get1 to URL https://192.168.0.103/api/menutree/read_datapoint.json?SessionId=$sid&Id=960, data , header
2015.10.31 22:45:32 5: ozw772: HandleSendQueue called, qlen = 1
2015.10.31 22:45:32 5: ozw772: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2015.10.31 22:45:33 3: ozw772: Read callback: request type was Update, no headers, buffer empty,
Error https://192.168.0.103/api/auth/login.json?user=Administrator&pwd=Triniti_: Can't connect(2) to https://192.168.0.103:443: SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
2015.10.31 22:45:33 5: ozw772: HandleSendQueue called, qlen = 1
2015.10.31 22:45:33 4: ozw772: HandleSendQueue sends request type Get1 to URL https://192.168.0.103/api/menutree/read_datapoint.json?SessionId=$sid&Id=960, data , header , timeout 2
2015.10.31 22:45:33 4: HttpUtils url=https://192.168.0.103/api/menutree/read_datapoint.json?SessionId=$sid&Id=960
2015.10.31 22:45:34 3: ozw772: Read callback: request type was Get1, no headers, buffer empty,
Error https://192.168.0.103/api/menutree/read_datapoint.json?SessionId=$sid&Id=960: Can't connect(2) to https://192.168.0.103:443: SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
2015.10.31 22:46:37 4: Connection accepted from FHEMWEB:192.168.0.111:51562
2015.10.31 22:46:37 4: FHEMWEB:192.168.0.111:51562 POST /fhem?detail=ozw772&dev.getozw772=ozw772&cmd.getozw772=get&arg.getozw772=Aussentemperatur&val.getozw772=&XHR=1&addLinks=1; BUFLEN:0
2015.10.31 22:46:37 5: Cmd: >get ozw772 Aussentemperatur<
2015.10.31 22:46:37 5: ozw772: get called with Aussentemperatur
2015.10.31 22:46:37 5: ozw772: get found option Aussentemperatur in attribute get1Name
2015.10.31 22:46:37 4: ozw772: get will now request Aussentemperatur
2015.10.31 22:46:37 5: ozw772: AddToQueue called, initial send queue length : 0
2015.10.31 22:46:37 5: ozw772: AddToQueue adds type Get1 to URL https://192.168.0.103/api/menutree/read_datapoint.json?SessionId=$sid&Id=960, data , header
2015.10.31 22:46:37 5: ozw772: HandleSendQueue called, qlen = 1
2015.10.31 22:46:37 4: ozw772: HandleSendQueue sends request type Get1 to URL https://192.168.0.103/api/menutree/read_datapoint.json?SessionId=$sid&Id=960, data , header , timeout 2
2015.10.31 22:46:37 4: HttpUtils url=https://192.168.0.103/api/menutree/read_datapoint.json?SessionId=$sid&Id=960
2015.10.31 22:46:37 4: name: /fhem?detail=ozw772&dev.getozw772=ozw772&cmd.getozw772=get&arg.getozw772=Aussentemperatur&val.getozw772=&XHR=1&addLinks=1 / RL:63 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2015.10.31 22:46:37 3: ozw772: Read callback: request type was Get1, no headers, buffer empty,
Error https://192.168.0.103/api/menutree/read_datapoint.json?SessionId=$sid&Id=960: Can't connect(2) to https://192.168.0.103:443: SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Was mache ich falsch?
Danke im Voraus
lg, Gerhard
Zitat von: gestein am 31 Oktober 2015, 23:16:14
Also habe ich es auf SSLv23:!SSLv3:!SSLv2 gesetzt.
Ändert nichts.
Aber heißt das nicht, SSLv3 nicht erlaubt ist?
...
Wobei ich sicher bin, dass ich die richtige Datei erwischt habe, da eine Fehlermeldung kommt, wenn ich ";" weglasse.
Ich habe es direkt nach dem "use"-Block eingebaut.
Doch, das ! vor dem SSLv3 bedeutet, dass es nicht benutzt werden darf. SSLv3 ist als unsicher eingestuft. Der Default ohne das Attribut benutzt nur noch TLS12, wenn ich es richtig in Erinnerung habe.
Die Stelle für die Variable hätte ich auch gewählt, kannst vielleicht noch mal schauen ob ggf. später im Quelltext es nicht nochmals anders gesetzt wird.
Wenn das auch nix bring, dann würde ich vorschlagen, dass Du im Bereich "Sonstiges" nochmal konkret nachfragst. Dort sollte der Modulautor mitlesen. Ich benutze und kenne das httpmod Modul nicht.
Im Modul gibt es leider keine andere Stelle in dem PERL_LWP_SSL_VERIFY_HOSTNAME verwendet wird.
Ich frag mal den Autor des Moduls.
Danke für Deine Hilfe!!
lg, Gerhard
Hallo "Gestein",
konntest Du eine Lösung für dein Problem finden?
Ich habe die gleiche Fehlermeldung in Verbindung mit der Nutzung von HTTPMOD und wäre an der Lösung sehr interessiert.
Meine Daten:
Plattform - Raspberry Pi 2
OS - Raspbian Jessie
fhem - Version 5.7
Grüße
Stephan
Ich verwende einfach kein https:// mehr.
Zum Glück versteht mein ozw772 auch normales http://
Vielleicht hilft Dir das auch?
lg, Gerhard
Hallo Gerhard,
Vielen Dank für deine Antwort.
Leider geht es bei mir nur via https.
Also heißt es weiter suchen und eine Lösung finden....
Gruß
Stephan
Hallo,
wenn Ihr eine Lösung gefunden habt, kann ich gerne in HTTOMOD ein weiteres Attribut einbauen, mit dem man SSL-Optionen setzen kann.
Mir fehlt aber leider selbst gerade die Zeit um bei der Suche zu helfen.
Gruss
Stefan
Ergänzung: HttpUtils.pm verarbeitet schon ein Attribut mit Namen sslVersion.
Vermutlich reicht das schon aus ...
Gruss
Stefan
Ich bin nicht wirklich im Thema, hatte weiter oben im Thread nur versucht zu helfen, aber ich vermute, das https Aurufe scheitern, wenn das Zertifikat nicht gültig ist. Ein Attribut ala "SSL_VERIFY = no" wäre bestimmt hilfreich, wenn man keine Möglichkeit hat das Zertifikat selbst auszutauschen.
Greift HTTPMOD auf HttpUtils.pm zurück?
Wenn ja wie würde der Parameter genau lauten?
So wie es sich für mich abzeichnet, wäre die beste Lösung wenn ein entsprechendes Attribute in HTTPMOD vorhanden wäre.
@ Stefan, gern übernehme ich den Testpart....
Gruß
Stephan
Hallo,
ja, HTTPMOD verwendet HttpUtils.
Unter http://forum.fhem.de/index.php?topic=45176.msg369686#msg369686 gibt es eine neue Version. Da kann man sslArgs übergeben, z.B.
attr myDevice sslArgs SSL_verify_mode,SSL_VERIFY_NONE
Aus der Liste wird ein Hash gemacht, also immer Key,Value,Key,Value angeben.
Gruss
Stefan
Hallo Stefan,
ich habe mir die neue Version von HTTPMOD runtergeladen und eingebunden.
Damit sind ist der Zugriff möglich ohne das der SSL Fehler auftritt.
Auf die Daten kann nun zugegriffen werden.
Danke für Deine Hilfe.
Stephan