Hallo Zusammen,
Nachdem ich lange im Forum gesucht habe bin ich leider nicht fundig geworden wie ich ssl Zertifikaten für ein verbindung zum abgesicherten mqtt server hin bekomme.
Ich habe einen mqtt docker ( eclipse-mosquitto:2.0-openssl ) aufgesetzt der funktioniert, e.g. mit zigbee2mqtt und nodered.
Für diese gesicherte verbindung wird user & password benutzt ( dies ist einfach im FHEM ), aber auch certifikaten.
Es werden 3 Zertifikaten ca.crt, fhem.crt und fhem.key für mein setup benötigt
Wie ich diese Zertifikaten einstellen kann ist mir völlig unkler. Hebe versucht die in cert verzeichnis zu packen, ohne erfolg.
Gehe davon aus das ich nicht der einzige bin der ein Abgesicherte mqtt server betreibt, vermutlich habe ich was triviales übersehen...
Also wie/wp sollen die Zertifikaten hin und wo werden die in FHEM Konfiguriert?
Mein Konfiguration :
define zwave2mqtt_in MQTT2_CLIENT 192.168.55.56:1883
setuuid server_mqtt2 5cc74af0-f33f-a4a9-17c1-240d031fc3ee47cb
attr server_mqtt2 SSL TLS
attr server_mqtt2 autocreate complex
attr server_mqtt2 clientId fhemmqtt2
attr server_mqtt2 room mqtt
attr server_mqtt2 subscriptions zigbee2mqtt/#
attr server_mqtt2 username fhem
* bei SSL habe ich mit "TLS" und "1" versucht wie es in verschiedene Forenbeiträgen steht.
** Hatte vorher eine ungesicherte mqtt server, dies hat einwandfrei funktioniert, einzige unterchied jeztz is user/pwd & Zertifikaten
Hoffe jemand hat eine Idee.
Beste Grüßen,
Ton
Das geht mit sslargs, siehe
https://fhem.de/commandref_modular.html#MQTT2_CLIENT-attr-sslargs
https://metacpan.org/pod/IO::Socket::SSL
https://forum.fhem.de/index.php?topic=103717
Hi,
vielleicht hilft auch dieses praktische Beispiel
https://forum.fhem.de/index.php/topic,111959.0.html
Gruß Otto
Super, danke :)
Besonders das Beispiel hilft zu sehen wie die IO:Socket:SSL parameter anzuwenden sind.
In der MQTT2_Client FHEM Reference wäre so ein Beispiel auch sehr Hilfreich.
Konnte leider noch nicht Testen, mein NUC Rechner, mit mqtt server, ging gerade heute kaputt, nur noch ein kurzes fiepen beim Anschalten und dann nichts mehr :-(
Hallo,
Leider klappt es doch nicht so einfach >:(
Ich habe die Einstellungen gemacht, einen password angelegt aber ich bekomme, mit verbose 5, immer wieder:
2023.02.16 23:04:00.011 5: HttpUtils url=https://do:18883/ NonBlocking via https
2023.02.16 23:04:00.012 4: IP: do -> 127.0.1.1
2023.02.16 23:04:00.016 4: HttpUtils: do: Connection refused (111)
"do" ist mein mqtt server hostname, der ist aus dem docker auch erreichbar, ein ping löst sich richtig auf.
Aber im Log sieht es aus als ob "do" falsch aufgelöst wird ( IP: do -> 127.0.1.1 ).
Der mqtt Server ist von andere dockers ( wie zigbee2mqtt ) erreichbar und funktioniert, also der sollte richtig Konfiguriert sein.
Wenn ich mit mit folgendes kommando teste, mit gleiche crt und key files klapt es von dem host ( habe es aber nicht aus dem docker versucht).
mosquitto_pub -h do -p 18883 -u fhem -P 'geheim' --cafile ca.crt --cert fhem.crt --key fhem.key -m hello -t /world
Mein device configuration sieht so aus :
define mqtt_main_client MQTT2_CLIENT do:18883
setuuid mqtt_main_client 7bc743f0-f43f-a1a9-18c1-341d034fb3ee47cb
attr mqtt_main_client SSL 1
attr mqtt_main_client autocreate complex
attr mqtt_main_client clientId fhemmqtt2
attr mqtt_main_client room MQTT2_DEVICE,mqtt
attr mqtt_main_client sslargs SSL_version:TLSv12 SSL_cert_file:fhem.crt SSL_key_file:fhem.key SSL_ca_file:ca.crt SSL_ca_path:/opt/fhem SSL_use_cert:1
attr mqtt_main_client subscriptions zigbee2mqtt/#
attr mqtt_main_client username fhem
Hoffe jemand fällt mit diese Informationen auf was ich falsch mache....
was kommt zurück wenn Du das mal in die FHEM Kommandozeile wirfst?
{qx(cat /etc/hosts)}
bzw.:
{qx(host do)}
ZitatAber im Log sieht es aus als ob "do" falsch aufgelöst wird ( IP: do -> 127.0.1.1 ).
Ist "attr global dnsServer" und/oder "attr global dnsHostsFile" gesetzt?
Falls dnsServer gesetzt ist, dann kann { HttpUtils_dumpDnsCache() } (in der FHEM Kommandozeile) Details liefern.
Also danke für die gute Antworten, bin begeistert!!
Ja damit ließ sich das Problem beheben.
Mein dnsServer stand, ohne das ich was gemacht habe, auch in ein frisch aufgesetztes Docker image auf 127.0.0.11
attr global dnsServer 127.0.0.11
Nachdem ich dann dnsServer auf mein router IP gesetzt habe lief es ohne Problemen.
Für andere Suchende zur Info, mein funktionierende Konfiguration sieht so aus :
attr global dnsServer 192.168.1.1
define mqtt_main_client MQTT2_CLIENT do:18883
setuuid mqtt_main_client 63ef8c32-f83f-2b46-a34f-fc9a0e1f466b2a1f
attr mqtt_main_client SSL 1
attr mqtt_main_client autocreate complex
attr mqtt_main_client clientId fhemmqtt2
attr mqtt_main_client room mqtt
attr mqtt_main_client sslargs SSL_cert_file:fhem.crt SSL_key_file:fhem.key SSL_ca_file:ca.crt SSL_ca_path:/opt/fhem SSL_use_cert:1
attr mqtt_main_client subscriptions zigbee2mqtt/#
attr mqtt_main_client username fhem
Das Password muss extra über einen set <device> password gesetzt werden
die 127.0.0.11 ist eine lokale Loopback Adresse und mMn die DNS Server Adresse die Docker im Image in die Datei /etc/resolv.conf schreibt.
https://docs.docker.com/config/containers/container-networking/#dns-services
Zumindest ist das bei mir auch so.
Insofern vermute ich noch ein Problem mit der DNS Konfiguration des Docker Host.