GETSITE() funktioniert nicht mit https://

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

Morello
Beiträge: 15
Registriert: 12.12.2017, 12:07

GETSITE() funktioniert nicht mit https://

Beitrag von Morello » 21.04.2020, 14:43

Hallo Forum,

ich habe eine Frage zu dem Befehl GETSITE().

Ich "lade" über GETSITE() eine Webseite in eine Variable, um daraus zwei Werte zu extrahieren.
Die Webseite wird dynamisch (PHP) erzeugt und lag auf einem Server der mit http://XXX.de/test.php zu erreichen war.
Die Seite ist sehr klein und enthält quasi nur die benötigten Werte und es funktionierte über einen längeren Zeitraum einwandfrei.

Der Webserver wurde umgestellt und ist jetzt unter https:// zu erreichen. Das Script funktioniert nun nicht mehr.
In der Hilfe ist ein Beispiel mit https:// genannt, sollte also funktionieren.

Um dem Fehler auf die Schliche zu kommen habe ich eine einfache (nicht dynamische) Seite erstellt und diese auf einem http und auf einem https-Server gelegt. Ergebnis: Im ersten Fall funktioniert das Script (Werte in CL verfügbar) im zweiten Fall enthält die Zielvariable "*Error sending DATA".

Muss ich vielleicht einen besonderen Header im HTML-Dokument hinterlegen (Doctype o.ä.), damit CL die Webseite einlesen kann?

Ich würde mich über Anregungungen zur Fehlersuche oder gar Lösungsvorschläge freuen, da ich schon zwei Tage ergebnislos im Trüben stochere.

Vielen Dank im Voraus.

Morello

-CCU2
-aktuelle Soft/Firmware

-Testwebseite:

Code: Alles auswählen

<html>
<body>
11#22#33
</body>
</html>
-Code

Code: Alles auswählen

GetSite("http://domain1.de/test.html",0,testvariable)
GetSite("https://domain2.de/test.html",0,testvariable)
Eingabe von Port 443 im zweiten Fall auch ohne Ergebnis

Wolle
Beiträge: 41
Registriert: 05.09.2007, 08:09
Wohnort: Wuppertal

Re: GETSITE() funktioniert nicht mit https://

Beitrag von Wolle » 23.04.2020, 08:18

Hallo,


habe schon einen Schreck bekommen weil bei mir einiges nicht mehr funktionieren würde.
Ist aber ein Fehlalarm, funktioniert alles wie gehabt mit https (CCU2 mit 2.51.6 / EE 3.70)

Hast du es denn überhaupt schon mal mit einem anderen https-Server versucht?


Gruss
Wolle

Morello
Beiträge: 15
Registriert: 12.12.2017, 12:07

Re: GETSITE() funktioniert nicht mit https://

Beitrag von Morello » 23.04.2020, 09:32

Hallo Wolle,

mit einem anderen https-Server habe ich es noch nicht versucht; habe keinen anderen zur Verfüging.
Was könnte mit dem aktuell benutzten nicht stimmen?

Gruß
Morello

Wolle
Beiträge: 41
Registriert: 05.09.2007, 08:09
Wohnort: Wuppertal

Re: GETSITE() funktioniert nicht mit https://

Beitrag von Wolle » 23.04.2020, 20:06

Du braucht doch keinen eigenen, es gibt unzählige https-Server im Internet, z.B.
https://www.google.de

Ich würde mal stark darauf tippen das Problem liegt an deinem https-Server bzw. deinen Zertifikaten und würde raten erstmal an der Stelle nach dem Fehler suchen.

Gruss
Wolle

Morello
Beiträge: 15
Registriert: 12.12.2017, 12:07

Re: GETSITE() funktioniert nicht mit https://

Beitrag von Morello » 24.04.2020, 12:01

Hallo Wolle,
Ich würde mal stark darauf tippen das Problem liegt an deinem https-Server bzw. deinen Zertifikaten
Die Vermutung liegt nahe. Doch reichen meine Kentnisse nicht, um zu wissen, wo ich ansetzen müsste.
Wäre schön, wenn ich hier einen Hinweis bekäme.
...unzählige https-Server im Internet
Das stimmt, daran habe ich auch schon gedacht. "Unzählig", reduziert sich allerdings gewaltig, da ich php einsetze, um die genannte Seite dynamisch zu erstellen. Ferner fände ich es schon besser, auf den "eigenen", bereits vorhandenen Server zugreifen zu können, nicht zuletzt wegen der Zuverlässigkeit (wie lange existieren kostenfreie Angebote?).

Gruß ans Forum und schönes Wochenende

Morello

Wolle
Beiträge: 41
Registriert: 05.09.2007, 08:09
Wohnort: Wuppertal

Re: GETSITE() funktioniert nicht mit https://

Beitrag von Wolle » 24.04.2020, 20:25

Mit der Frage was an deinem Server falsch sein kann bist du hier falsch.
Das Thema stimmt ja schon nicht.
Bevor du schreibst "GETSITE.. funktioniert nicht" hättest du es ja einfach mal mit einen normalen https-Server (wie z.B. google) probieren können und dann festgestellt dass der Fehler an deinem speziellen Server und nicht an GETSITE liegt - was ja auch viel naheliegender ist.

Für die Fehlerbebung bei deinem Server musst du ein entsprechendes Forum für deinen Server suchen und die Konfiguration dann genau beschreiben.

Gruss
Wolle

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: GETSITE() funktioniert nicht mit https://

Beitrag von Familienvater » 25.04.2020, 15:25

Hi,

Probleme bei https können zig Problemquellen haben. Es könnte z.B. helfen, wenn Du uns sagst, mit welcher Exec-Engine-Version auf welcher CCUx-Firmware-Version Du es probierst. Dann wurde ja schon angesprochen, das es am Zertifikat des Webservers liegen kann, ob es ein selbst Signiertes-Zertifikat ist (das könnte Probleme verursachen), oder ob es z.B. ein offiziell signiertes von Let's Encrypt ist. Grundsätzliche Hinweise sollte Dir Dein eigener Browser auf dem PC geben, wenn Du genau diese Adresse aufrufst, die Getsite auch aufrufen soll. Wobei es sein kann, das Du auf deinem PC einem "selbstsignierten" Zertifikat das Vertrauen geschenkt hast, davon weiß aber der Getsite auf der CCU nichts. Es kann bei einer alten Firmware auf der CCU aber auch sein, das einem Let's Encrypt Zertifikat nicht mehr vertraut wird, weil das "bekannte" Masterzertifikat auf der CCU abgelaufen ist. Ich gehe davon aus, das die EE die SSL-Bibliotheken auf der CCU verwendet. Im Zweifelsfall könnte ein Test per SSH auf der CCU mit einem entsprechenden wget-Aufruf auf die URL auch irgendwelche Fehlermeldungen bringen.
Und zuletzt kann es auch an der Web-Server Konfig liegen, das dort evtl. irgendwelche "inkompatiblen" Algorithmen für den Schlüsselaustausch oder nur TLS v1.2 aktiviert sind, und das evtl. wieder nicht mit der CCU harmoniert.
Falls der Webserver direkt aus dem Internet erreichbar ist, kannst Du z.B. mal mit https://www.ssllabs.com/ssltest/ den Webserver testen, und bekommst im Zweifelsfall Probleme mit Zertifikaten, komischen Konfigurationen etc. angezeigt.

Der Familienvater

Morello
Beiträge: 15
Registriert: 12.12.2017, 12:07

Re: GETSITE() funktioniert nicht mit https://

Beitrag von Morello » 25.04.2020, 15:27

Hallo Wolle,

ich habe Dein zweites Post völlig missverstanden.
"...es gibt unzählige https-Server im Internet..." hatte ich so interpretiert, dass ich mein Projekt auf einem anderen Server betreiben soll und den Hinweis auf Google.de als Aufforderung nach entsprechenden Angeboten im Netz zu suchen.
Das war mir nach dem nächsten Post klar und ich konnte entsprechende Versuche machen.

Dass es naheliegender war, dass der Fehler beim Server zu suchen ist, war für mich nicht sofort klar, da die Webseite ja in allen Browsern darstellbar ist und ein Ansprechen von https-Seiten erst seit einer bestimmen CL-Version möglich ist. Deshalb könnte jemand, der sich nicht so gut auskennt (Ich) z.B. schließen, dass es ein Kommunikationsproblem zwischen Cl und best. Servern gibt.

Ich habe nach vielen weiteren Versuchen eine Lösung gefunden, die mir weiterhilft. Ich habe eine Subdomain angelegt, bei der ich SSL ausschalten konnte.
Das eigentliche Problem wird mir daher wohl ein Rätsel bleiben.

Danke nochmals und Grüße

Morello

Morello
Beiträge: 15
Registriert: 12.12.2017, 12:07

Re: GETSITE() funktioniert nicht mit https://

Beitrag von Morello » 25.04.2020, 15:54

Hallo Familienvater,

vielen Dank, dass Du Dich hier einschaltest und Dir die Mühe machst, mögliche Ansätze zur Analyse des Fehlers darlegst.
Just habe ich gepostet, wie ich das Problem zwar nicht gelöst, jedoch umgangen habe.

Wenn Du trotzdem eine Idee hast, wo der Fehler liegt, wäre das natürlich interessant. Aber, da es jetzt funktioniert (s.o.) will ich Deine/Eure Zeit nicht unnötigerweise beanspruchen.
Hier die Eckdaten meiner Konfiguration:

ExecEngine: 4,5 /191107
CCU Firmw: 2.51.6

Apache Server
Zertifikat: Let's Encrypt

Ich habe das Tool https://gf.dev/tls-scanner bemüht:
Protokolle:
SSLv2: not offered
SSLv3: not offered
TLS 1: not offered
TLS 1.1: is not offered
TLS 1.2: offered
TLS 1.3: offered with final

Server Preverences:
Cipher Order: TLS 1.2 (bei Seiten, bei denen der GETSITE-Aufruf funktioniert steht hier zusätzlich TLS 1 und TLS 1.1)
...Test per SSH auf der CCU mit einem entsprechenden wget-Aufruf auf die URL
Da bin ich raus. Das Wissen dazu besitze ich nicht.

Vielen Dank und Grüße

Morello

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: GETSITE() funktioniert nicht mit https://

Beitrag von Familienvater » 27.04.2020, 12:44

Hi,

ich habe nur mal kurz und nicht "eindringlich" getestet, aber tendiere dazu, zu behaupten, das GETSITE bei mir (EE 3.68 - 200305, CCU2 FW 2.47.20) kein HTTPS unterstützt.

Wenn ich eine URL beginnend mit https:// und Port 443 versuche aufzurufen, dann kommt beim Webserver gar kein Request an, der Rückgabewert von getsite ist "*ERROR - Sending Data".
Lasse ich das https:// weg, und gebe den Port 443 mit an, dann sehe ich auf dem Webserver, dass ein HTTP-Request auf dem SSL-Port eingegangen ist, und Getsite liefert die folgende Fehlermeldung:

Code: Alles auswählen

HTTP/1.1 400 Bad Request
Server: nginx/1.14.2
Date: Mon, 27 Apr 2020 10:40:55 GMT
Content-Type: text/html
Content-Length: 271
Connection: close
Allow: GET, POST, HEAD

<html>
<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>The plain HTTP request was sent to HTTPS port</center>
<hr><center>nginx/1.14.2</center>
</body>
</html>
Der Familienvater

Antworten

Zurück zu „homeputer CL“