Wie halte ich das CA-Zertifikat im Arduino aktuell?

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:

  1. Wie hoch ist die Wahrscheinlichkeit, dass sich jemand als Dein MQTT-Server ausgibt und was könnte er mit den Daten anfangen?

  2. 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.

Gruß Tommy

1 Like

Hi Tommy,

Ja, der MQTT-Server ist lokal.

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 :slight_smile:

Danke dafür.

Leonardo zwei

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.

Gruß Tommy

... 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?

Gruß Tommy

Die Zertifikat-Kette steht schon...

Dei Tutorial ist interessant... die Frage die ich noch klären muss wie das Zertifikat beim NINA-Chip der im Nano 33 IoT verbaut ist geladen wird...

Aber ich sehe da Fingerprinting ist ja auch ne Methode, (hatte ich gar nicht im Fokus) Fen Fingerprint kann man ja im normalen Speicher halten...

Und wenn du nicht in Jork bist hatte ich dich mit einemanderen Wikinger verwechselt ---

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.

Gruß Tommy

Stand der Recherche:

  • die Root-Zertifikate sind in der Nina Firmware integrriert

  • Das Binary is ca 1Mb groß und somit definitiv zu groß für das RAM des Nano 33

  • Wenn ich keinen Weg finde NUR die Zertifikate zu Flashen wird das Update über WLAN nichts
    Nina-Firmware

  • einen setTrustAnchors oder ähnliches gibt es bei dem Nina-Clienten nicht...
    NinaWifiClient

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.

Gruß Tommy

Ja, Tommy,

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.

OTA hört sich vielversprechend an...

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)...

Ich werde mich da mal einlesen...

Wenn das Zertifikat im Code einkompiliert ist, wird ja ein aktualisiertes Zertifikat mit ausgetauscht.

Gruß Tommy

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.

Ok,

Das ist der weg den ich gehen werde... euch vielen Dank für den Input :slight_smile:

Leonardo

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.