HTTPMOD und SSL-Zerifikte (Fehler 14090086)

Begonnen von gestein, 01 November 2015, 07:42:06

Vorheriges Thema - Nächstes Thema

gestein

Hallo,

ich versuche mit Hilfe des Moduls 98_HTTPMOD meine ozw772 in fhem einzubinden.
Leider bekomme ich immer einen Zertifikate-Fehler im fhem, daher warden keine Werte abgefragt.

Ich habe dazu schon ein paar Tipps im Bereich "Anfänger" bekommen, das hat aber alles nichts geholfen.
http://forum.fhem.de/index.php/topic,43173.0.html

Anscheinend benutzt der ozw772 die SSL-Version 3 und das Modul kommt mit dem falschen Zertifikat nicht zurecht.
Wenn ich die Aufrufe in einem Broswer durchführe, bekomme ich auch die Fehlermedlungen, kann aber dann trotzdem weitermachen und Datenpunkte auslesen.

Kann mir bitte jemand helfen?
Danke im Voraus
liebe Grüße
Gerhard

rudolfkoenig

Ich habe jetzt (gefuehlt) eine Stunde lang gesucht, und bin jetzt etwas verwirrter als vorher. Ich vermute, dass das Zertifikat nicht gueltig ist. Dagegen spricht das IO::Socket:SSL Handbuch: "SSL_verify_mode: This option sets the verification mode for the peer certificate.  The default (0x00) does no authentication.". Vermutlich interpretiere ich diese Aussage falsch.  Das Beste, was ich gefunden habe ist der Ratschlag in
http://search.cpan.org/~sullr/IO-Socket-SSL-2.020/lib/IO/Socket/SSL.pod#Common_Usage_Errors
dass man SSL_fingerprint setzt. Komischerweise ist diese Option nicht dokumentiert. Setzen koennte man es per
{ $defs{HTTPMODNAME}{sslargs}{SSL_fingerprint} = "xxxx" }
z.Bsp in einem global:INITIALIZED notify. Nicht getestet, keine Ahnung ob es tut. Wuerde mich freuen, wenn jemand mich aufklaert.

Kann man die Kiste nicht via HTTP ansprechen?

gestein

Ich habe das nun mit dem "http" probiert.
Scheint auch zu funktionieren. Danke an Rudolf für den Tipp!!

Allerdings kommt nun ein anderer Fehler  :(
2015.11.01 18:45:05 4: ozw772: GetUpdate called (update)
2015.11.01 18:45:05 5: ozw772: internal interval timer set to call GetUpdate again in 300 seconds
2015.11.01 18:45:05 5: ozw772: AddToQueue called, initial send queue length : 0
2015.11.01 18:45:05 5: ozw772: AddToQueue adds type Update to URL http://192.168.0.103/api/auth/login.json?user=xxxxx&pwd=xxxxx, data , header
2015.11.01 18:45:05 5: ozw772: HandleSendQueue called, qlen = 1
2015.11.01 18:45:05 4: ozw772: HandleSendQueue sends request type Update to URL http://192.168.0.103/api/auth/login.json?user=xxxxx&pwd=xxxxx, data , header , timeout 2
2015.11.01 18:45:05 4: HttpUtils url=http://192.168.0.103/api/auth/login.json?user=xxxxx&pwd=xxxxx
2015.11.01 18:45:05 5: ozw772: GetUpdate checks if poll required for TempAussen (1)
2015.11.01 18:45:05 5: ozw772: GetUpdate will request TempAussen
2015.11.01 18:45:05 5: ozw772: AddToQueue called, initial send queue length : 0
2015.11.01 18:45:05 5: ozw772: AddToQueue adds type Get1 to URL http://192.168.0.103/api/menutree/read_datapoint.json?SessionId=$sid&Id=960, data , header
2015.11.01 18:45:05 5: ozw772: HandleSendQueue called, qlen = 1
2015.11.01 18:45:05 5: ozw772: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2015.11.01 18:45:05 4: http://192.168.0.103/api/auth/login.json?user=xxxxx&pwd=xxxxx: HTTP response code 200
2015.11.01 18:45:05 4: HttpUtils http://192.168.0.103/api/auth/login.json?user=xxxxx&pwd=xxxxx: Got data, length: 104
2015.11.01 18:45:05 5: ozw772: Read Callback: Request type was Update,
header: HTTP/1.0 200 OK
Content-Type: application/json;charset=utf-8
Expires: 0
Cache-Control: must-revalidate, max-age=0, proxy-revalidate, s-maxage=0, post-check=0, pre-check=0
Content-Length: 104
Connection: close
Date: Sun, 01 Nov 2015 17:46:44 GMT
Server: Siemens Switzerland Ltd.,
buffer: {

"SessionId": "b3224782-3be3-4067-9941-c54c759ddfc4",

    "Result": {
"Success": "true"
    }
}

2015.11.01 18:45:05 5: ozw772: Read starts extracting all Readings from HTTP Response to Update
2015.11.01 18:45:05 3: ozw772: Read response to Update didn't match any Reading(s)
2015.11.01 18:45:05 5: ozw772: HandleSendQueue called, qlen = 1
2015.11.01 18:45:05 5: ozw772: HandleSendQueue - minSendDelay not over, rescheduling
2015.11.01 18:45:06 5: ozw772: HandleSendQueue called, qlen = 1
2015.11.01 18:45:06 4: ozw772: HandleSendQueue sends request type Get1 to URL http://192.168.0.103/api/menutree/read_datapoint.json?SessionId=$sid&Id=960, data , header , timeout 2
2015.11.01 18:45:06 4: HttpUtils url=http://192.168.0.103/api/menutree/read_datapoint.json?SessionId=$sid&Id=960
2015.11.01 18:45:06 4: http://192.168.0.103/api/menutree/read_datapoint.json?SessionId=$sid&Id=960: HTTP response code 200
2015.11.01 18:45:06 4: HttpUtils http://192.168.0.103/api/menutree/read_datapoint.json?SessionId=$sid&Id=960: Got data, length: 103
2015.11.01 18:45:06 5: ozw772: Read Callback: Request type was Get1,
header: HTTP/1.0 200 OK
Content-Type: application/json;charset=utf-8
Expires: 0
Cache-Control: must-revalidate, max-age=0, proxy-revalidate, s-maxage=0, post-check=0, pre-check=0
Content-Length: 103
Connection: close
Date: Sun, 01 Nov 2015 17:46:45 GMT
Server: Siemens Switzerland Ltd.,
buffer: {
"Result": {
"Success": "false",
"Error": {
"Txt": "session not valid",
"Nr": "2"
}
}
}
2015.11.01 18:45:06 5: ozw772: Read starts extracting all Readings from HTTP Response to Get1
2015.11.01 18:45:06 3: ozw772: Read response to Get1 didn't match any Reading(s)
2015.11.01 18:45:06 5: ozw772: HandleSendQueue called, qlen = 0


Die SessionID kann abgefragt werden, stimmt aber bei den Readings nicht mehr?
Wenn ich die Abfragen in den Browser kopiere, dann funktioniert es mal wieder.

Danke für jeden Tipp im Voraus
liebe Grüße
Gerhard

gestein

Es passt zwar nicht mehr in den Thread, aber ich habe die Anbindung des owz772 an den fhem zum Laufen gebracht.
Es haben noch ein paar define gefehlt um das Modul richtig zu konfigurieren (syntax der SessionID, syntax der Fehlermeldung, wie die Werte zu interpretieren sind etc.).
Diese waren unter http://forum.fhem.de/index.php/topic,33765.msg264201.html#msg264201 angeführt, aber leider ganz hinten im Text.

Nun kann ich Werte abfragen und (hoffentlich) auch bald setzen.
Zur Zeit läuft alles unter http und nicht https.

lg, Gerhard