Ich habe eine Lüftersteuerung mit einem Artuino-Nano33IoT gebaut. Diese Steuerung ist prinzipiell autark. Ich möchte den Status an einem MQTT-Dienst auf meiinem Homeserve senden. Auch will ich über den MQTT die Steuerung konfigurieren oder direkt ansprechen können.
Aufbau grob:
Lüfter
Sperrklappe
Feuchtesensor DHT-22
Fensterkontakt
---verdrahtet mit---
Arduino-Nano 33 IoT mit einer Relaiskarte
---verbunden per WLAN mit---
Heimserver mit MQTT
---über das LAN---
Darstellung auf Handy, Panel, Browser...
Die Hardware ist soweit zusammengebaut und getestet.
Ich würde gerne den MQTT-Dienst per SSL mit einem entsprechenden Server-Zertifikat ansprechen.
Dazu habe ich mir eine CA generiert und ein entsprechendes Server-Zertifikat auf den MQTT-Server abgelegt.
Damit der Arduino das Zertifikat prüfen kann lade ich es auf diesen in dessen NINA-Chip.
So weit so gut...
Aber CA-Zertifkat hat eine begrenzte Lebensdauer (aktuell ist 8 Jahre eingestellt).
D.h. nach Acht Jahren wird die Steuerung, die irgedwo in der Abseite sitzt, die Kommunikation aufgeben,
da das Zertifikat abgelaufen ist.
Wie Organisiert man am besten, dass das CA-Zertifikat aktualisiert wird...
Mein Favorit währe über WLAN, da ich die Steuerung dazu nicht aus der Abseite raus holen muss...
==> Da weiss ich allerding nicht wie
Ich kann auch das CA-Zertifikat mit einer Gültigkeit von 50 Jahren erzeugen...
==> Wie hoch währe da das Sicherheitsrisiko ?
Der MQTT-Client kann auch so eingestellt werden, dass die Gültigkeit des Zertifikates nicht geprüft wird...
==> Wie hoch währe da das Sicherheitsrisiko ?
Ich müsste in die Steuerung regelmäßig updates einspielen...
==> Regelmäßig heisst jedes Jahr, denn nach 8 Jahren kann sich keiner dran erinnern dass da ein Zertifikat ausgelaufen ist
==> Daraus ergibt sich ein gewisser Aufwand... Kiste ausbauen, per USB anschließen, update aufspielen und alles wieder zusammenbauen
(Bei einer Device sicherlich machbar, aber ich plane ja mehr :-) )
Was ist eure Meinung, wie ich das am besten handhabe?
Ist der MQTT-Server lokal? Wozu brauchst Du SSL? Sind so viele Fremde in Deinem Netz?
Wenn er irgendwo im Netz ist:
Wie hoch ist die Wahrscheinlichkeit, dass sich jemand als Dein MQTT-Server ausgibt und was könnte er mit den Daten anfangen?
Ist der unsicherere Weg
Besser: Hole Dir ein offizielles Zertifikat, z.B. kostenfrei von Let's Encrypt.
Für eigene CA kenne ich es nicht. Für offizielle Root-Server (CERT) als Wurzel der Trust-Kette ist es auf dem ESP8266 ziemlich einfach. Deren Zertifikate aktualisiere ich nächtlich.
Falls Du auf dieser Basis etwas bauen willst, sind hier die Infos dazu.
Ich habe mir eher die Frage gestellt warum nicht mit SSL wenn die Hardware das hergibt.
Fremde im Netz... naja ich habe Kinder die evtl. nicht so skeptisch sind wie ich, da ist schnell mal ein kleines Programm gestartet dass nicht dass macht was es vorgibt ...
Bei einem Offiziellen Let's Encrypt-Zertifikat ist das Problem, dass das irgendwann ausläuft nur verschoben.
Ich werde mir deinen Link mal genauer ansehen... vieleicht ist dass das was ich suche
Es wird nicht das Zertifikat geprüft, sondern dessen Root-Zertifikat. Das hat so ca. 20 Jahre. Irgendwann musst Du jedes Zertifikat austauschen, also baue gleich eine Veriante ein, wie Du prüfen kannst, ob ein neues Zertifikat da ist oder starte aktiv über eine Weboberfläche das Einspielen eines neuen Zertifikats.
Den Arduino-Nano 33 IoT kenne ich nicht, beim ESP8266 würde ich es einfach ins LittleFS einspielen. Als Erinnerung gibt es elektronische Kalender.
... Ja eine Zertifikatkette kann auf meinem persöhnlich root-Zertifikat genauso aufbauen ich sehe da keinen Vorteil eines Let's Encrypt Zertifikates... Der MQTT-Server und auch die Device sollen nicht vom Internet aus angesprochen werden...
Kann man mit LittleFS über WLAN die Zertifikate aktualisieren... dann ist das aus meiner Sicht der beste Weg...
Off-Topic: Wird man dich dieses Jahr in Jork sehen ?
Kann man bestimmt, wirst Du aber selbst bauen müssen. Schau Dir mein Tutorial als Basis an.
Was soll ich in Jork? Da war ich noch nie. Verwechselst Du mich mit jemanden?
Meine Wikinger-Verbindung ist die Spielereihe Cultures von Funatics. Dafür habe ich mal Levels geschrieben.
Der Fingerprint gilt so lange, wie das Zertifikat und muss dann neu generiert werden. Das geht auch über OpenSSL. Da musst Du Dich einlesen.
Evtl. Zertifikat 3 Monate, automatisch kurz davor neu erstellen, Fingerprint erstellen und hoch laden. Kann man alles automatisieren. Auf jedem Betriebssystem.
Zu dem Nina-Teil kann ich nichts sagen. Ich verwende Wemos/Lolin D1 mini (pro). Das eigentliche Zertifikat ist wesentlich kleiner. Das ar für alle Root-Zertifikate nützt Dir für Dein eigenes Zertifikat eh nichts.
Der D1 war bei dem Projekt bei mir auch in der engeren Auswahl, Ich hatte mich dann aber für den Nano33IoT entschieden.
und Ja, alle Root-Zertifikate brauch ich nur wenn ich mich mit irgendwelchen Maschienen aus dem Netz verbinden will und ich nicht weiss welche... wie z.B. ein Web-Browser... und genau dass soll die Device eben NICHT können.
im Übrigen sind in der Firmware von Nina nur eine Hand voll Zertifikate enthalten:
Amazon
Google Trust Services LLC
Comodo CA Limited
COMODO CA Limited
DigiCert
Internet Security Research Group
"VeriSign, Inc."
Baltimore
GlobalSign
"Starfield Technologies, Inc."
Digital Signature Trust Co.
"Cybertrust, Inc"
The USERTRUST Network
D.h. Um das Let's Encrypt Zertifikat müsste ich mich genauso wie um ein Selbst erstelltes selber kümmern.
Der Artuino-Nano33IoT unterstützt doch OverTheAir Updates.
Damit kann ich doch a) den Code aktualisieren, sofern sich Bugs eingeschlichen haben oder neue Features hinzukommen und b) das einkompillierte Zertifikat austauschen.
Hast du da einen Einstiegspunkt für mich... (Bei den Beispielen von WifiNina habe ich nichts gefunden und auf den ersten Blick ist bei dem Modul "ArduinoOTA" nur von dem update des Sketches die Rede... nicht von den Zertifikaten)...
Man kann den Sketch updaten aber auch andere Speicherbereiche.
Oder eben wie schon gesagt wurde, das Zertifikat im Code halten, dann muss man nicht am OTA selbst Hand anlegen.
In der Arduino IDE befinden sich OTA Beispiele, die man erstmal testen und dann in Deinen Sketch integrieren kann.