SSL-Problem mit CUxD curl

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

Antworten
0x00
Beiträge: 3
Registriert: 08.07.2018, 23:16

SSL-Problem mit CUxD curl

Beitrag von 0x00 » 08.07.2018, 23:46

Hallo zusammen!

Bisher war ich stiller Leser dieses Forums und habe auch schon von diversen Beiträgen hier sehr profitiert. (Ich war zwar vor einem Jahr bereits registriert, aber als ich mich gerade einloggen wollte, war mein Konto wohl gelöscht.) An dieser Stelle also schon mal ein herzliches Dankeschön in die große Runde! Jetzt habe ich aber eine konkrete Frage zum curl im CUxD, für die ich bisher keine Antwort finden konnte. Ich habe aktuell das folgende Problem:

Ich würde gerne über meine CCU2 den Modus meiner Arlo-Kameras umschalten. Da Netgear ja leider noch keine offizielle API bereitstellt gehe ich den Umweg über IFTTT. Dort habe ich mit dem Maker den Status meiner Arlo-Kameras per Webhook-Event verknüpft. Das funktioniert so weit auch wunderbar. Ich kann mit

Code: Alles auswählen

curl https://maker.ifttt.com/trigger/MEIN_EVENT/with/key/MEIN_KEY
(oder auch direkt im Browser) also mein Event mittels GET-Request triggern.

Nun wollte ich den Aufruf mittels CUxD auf meiner CCU2 durchführen. Bei diversen anderen Requests wie z.B. Pushover funktioniert das auch wunderbar. Also habe ich im Programm den Scriptaufruf

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s https://maker.ifttt.com/trigger/MEIN_EVENT/with/key/MEIN_KEY");
eingebaut. Das hat nun leider nicht funktioniert.

Ich hab das ganze also per Terminal von der CCU2 aus getestet, um dem Fehler näher zu kommen. Dort erhalte ich beim Aufruf von

Code: Alles auswählen

/usr/local/addons/cuxd/curl https://maker.ifttt.com/trigger/MEIN_EVENT/with/key/MEIN_KEY
dann auch direkt die folgende Fehlermeldung:

Code: Alles auswählen

curl: (60) SSL certificate problem: self signed certificate in certificate chain
. Dieses könnte ich nun natürlich mittels oder

Code: Alles auswählen

--insecure
Flag übergehen und den Request erfolgreich absetzen. Das fände ich aber sehr unschön, da maker.ifttt.com ja ein gültiges Zertifikat von Go Daddy vorweisen kann. Von Qualys SSL Labs gibt es hier auch ein "A" für den Server-Test.

Gibt es hier ein Problem mit dem CA Bundle, welches von curl aktuell genutzt wird? Wie könnte hier Abhilfe geschaffen werden?

Meine Versionen:
CCU2 mit (noch) Version 2.31.25
CUxD mit Version 2.0.0
#/usr/local/addons/cuxd/curl --version: curl 7.46.0 (arm-unknown-linux-gnu) libcurl/7.46.0 OpenSSL/1.0.0j zlib/1.2.7

Vielen Dank und liebe Grüße

Benutzeravatar
uwe111
Beiträge: 4807
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 239 Mal
Kontaktdaten:

Re: SSL-Problem mit CUxD curl

Beitrag von uwe111 » 09.07.2018, 14:20

0x00 hat geschrieben:
08.07.2018, 23:46
Gibt es hier ein Problem mit dem CA Bundle, welches von curl aktuell genutzt wird? Wie könnte hier Abhilfe geschaffen werden?
Welches wird denn genutzt?

Du kannst beim Aufruf Deine eigenen Zertifikate hinzufügen:

Code: Alles auswählen

 --cacert [file]
Hier ist das etwas ausführlicher beschrieben: https://curl.haxx.se/docs/sslcerts.html

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

0x00
Beiträge: 3
Registriert: 08.07.2018, 23:16

Re: SSL-Problem mit CUxD curl

Beitrag von 0x00 » 11.07.2018, 14:56

Es scheint als würde gar kein CA-Bundle benutzt werden:

Code: Alles auswählen

#strace /usr/local/addons/cuxd/curl https://www.google.com | grep open
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/usr/lib/libssl.so.1.0.0", O_RDONLY) = 3
open("/usr/lib/libcrypto.so.1.0.0", O_RDONLY) = 3
open("/usr/lib/libz.so.1", O_RDONLY)    = 3
open("/lib/librt.so.1", O_RDONLY)       = 3
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
open("/lib/libc.so.6", O_RDONLY)        = 3
open("/lib/libdl.so.2", O_RDONLY)       = 3
open("/lib/libpthread.so.0", O_RDONLY)  = 3
open("/etc/ssl/openssl.cnf", O_RDONLY|O_LARGEFILE) = 3
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/usr/lib/libz.so", O_RDONLY)      = 3
open("/root/.curlrc", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/etc/resolv.conf", O_RDONLY)      = 3
open("/etc/nsswitch.conf", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib/libnss_dns.so.2", O_RDONLY)  = 3
open("/lib/libresolv.so.2", O_RDONLY)   = 3
open("/etc/host.conf", O_RDONLY)        = -1 ENOENT (No such file or directory)
open("/etc/resolv.conf", O_RDONLY)      = 3
open("/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_LARGEFILE) = 4
Hier bekomme ich dann auch wieder die o.g. Fehlermeldung.

Ich habe dann das CA-Bundle von https://curl.haxx.se/ca/cacert.pem heruntergeladen und mit

Code: Alles auswählen

CURL_CA_BUNDLE='/usr/local/addons/cuxd/cacert.pem'
die entsprechende Umgebungsvariable gesetzt. Jetzt wird das Bundle genutzt (vorletzte Zeile):

Code: Alles auswählen

#strace /usr/local/addons/cuxd/curl https://www.google.com | grep open
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/usr/lib/libssl.so.1.0.0", O_RDONLY) = 3
open("/usr/lib/libcrypto.so.1.0.0", O_RDONLY) = 3
open("/usr/lib/libz.so.1", O_RDONLY)    = 3
open("/lib/librt.so.1", O_RDONLY)       = 3
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
open("/lib/libc.so.6", O_RDONLY)        = 3
open("/lib/libdl.so.2", O_RDONLY)       = 3
open("/lib/libpthread.so.0", O_RDONLY)  = 3
open("/etc/ssl/openssl.cnf", O_RDONLY|O_LARGEFILE) = 3
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/usr/lib/libz.so", O_RDONLY)      = 3
open("/root/.curlrc", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/etc/resolv.conf", O_RDONLY)      = 3
open("/etc/nsswitch.conf", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib/libnss_dns.so.2", O_RDONLY)  = 3
open("/lib/libresolv.so.2", O_RDONLY)   = 3
open("/etc/host.conf", O_RDONLY)        = -1 ENOENT (No such file or directory)
open("/etc/resolv.conf", O_RDONLY)      = 3
open("/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_LARGEFILE) = 4
open("/usr/local/addons/cuxd/cacert.pem", O_RDONLY|O_LARGEFILE) = 4
open("/usr/share/zoneinfo/CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00", O_RDONLY) = -1 ENOENT (No such file or directory)
und jetzt klappt auch der Aufruf.

Viele Grüße
Christoph

Benutzeravatar
uwe111
Beiträge: 4807
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 239 Mal
Kontaktdaten:

Re: SSL-Problem mit CUxD curl

Beitrag von uwe111 » 12.07.2018, 10:11

Hallo Christoph,

danke für Deine ausführlichen Hinweise. Ich werde es ab der nächsten Version in CUxD integrieren.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

0x00
Beiträge: 3
Registriert: 08.07.2018, 23:16

Re: SSL-Problem mit CUxD curl

Beitrag von 0x00 » 13.07.2018, 00:30

Hey Uwe,

super! Vielen herzlichen Dank! Auch überhaupt für deine ganze Arbeit an CUxD. Ohne ihn wäre die CCU2 für mich wohl nur halb so wertvoll! Ich freue mich schon aufs Testen der nächsten Version.

Viele Grüße
Christoph

Benutzeravatar
uwe111
Beiträge: 4807
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 239 Mal
Kontaktdaten:

Re: SSL-Problem mit CUxD curl

Beitrag von uwe111 » 16.08.2018, 17:04

Hallo Christoph,

in der aktuellen CCU2-Version ist es jetzt drin.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

DIWI67
Beiträge: 1
Registriert: 30.01.2019, 11:57

Re: SSL-Problem mit CUxD curl

Beitrag von DIWI67 » 30.01.2019, 12:11

Hallo an das Forum,

zuerst ein großes Lob an alle hier wirklich qualifizierte Beiträge liefern - ich bin leider noch ziemlich neu bei dem gesamten Thema (RasPi mit pivCCU2 erst vor 3 Wochen ans laufen gebracht mit viel Schweiss trotz der Aussentemperaturen ;-)).

CCU2 Version: 2.41.5, CUxD Version 2.2.0

Mein Ziel: Ansteuerung Arlo Kameras wenn auf der Homematic ein Event ausgelöst wird (z.B. Gartenhaustüre wird geöffnet).

IFTTT installiert gem. der Beschreibung, CuxD läuft generell (wird für Email-Versandt genutzt). Soweit so gut.
Die erforderlichen Schritte in IFTTT eingerichet - wenn ich diese über einen WEB-Befehl teste (https://maker.ifttt.com/trigger/Testeve ... rsönl._key) geht das auch. Mein Problem liegt also auf der CCU2.
Wenn ich hier den gem. Beschreibung eingerichteten Schalter drücke sollte doch nach meinem blutigen Anfängerverständnis die Aktion ausgeöst werden - da passiert aber nix! Also bei dem Schalter die Protokollierung eingeschaltet und folgende Meldung erhalten:

11:51:24 30.01.2019 IFTTT1:1
unbekannte Meldung (SEND=TRUE), unbekannte Meldung (RETURN) 127

CuXD-Einstellungen beim Schalter sind Original wie in der Anleitung beschrieben... habe alles schon zweimal gemacht incl. Neustart CuXD - jetzt bin ich mit meinem Anfängerlatein am Ende.
Wäre super wenn mir hier einer von Euch Profis weiterhelfen kann.
Vielen Dank schon mal vorab!
DIWI

Antworten

Zurück zu „CUxD“