Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Internet der Dinge-Technologie

Sichere Device-Authentifizierung mit X.509-Zertifikaten in Eclipse Hono

In den vergangenen Monaten häuften sich Medienberichte über unsichere IoT-Devices, die grundlegende Security-Standards verfehlen. Ein wiederkehrendes Anliegen: die Konfidzialität von Daten, die von Devices an Cloud-Services übertragen werden. Überraschenderweise senden viele Devices Daten über öffentliche Netzwerke unverschlüsselt, obwohl TCP/IP-basierte Protokolle wie HTTP und MQTT TLS-Verschlüsselung unterstützen.

Eclipse Hono hat TLS für seine HTTP- und MQTT-Adapter von Anfang an enabled. Der 0.9-M2-Milestone fügt nun Support für X.509 Client-Certificate-Authentifizierung während des TLS-Handshakes hinzu, sodass Devices ein Key Pair statt Username/Password nutzen können.

Aufruf an alle Entwickler

Europas größter IoT-Hackathon kehrt am 14.–15. Mai 2023 nach Berlin zurück. 700+ Entwickler bei domain-spezifischen Challenges – lernen, netzwerken, Spaß haben.

In diesem Guide durchlaufen wir ein komplettes Beispiel: Tenant-spezifischen Trust Anchor erstellen und registrieren, Device-Zertifikat generieren, dessen Subject DN registrieren und das Zertifikat zur Authentifizierung des Devices an Honos MQTT-Adapter nutzen. Grundkenntnisse in RSA-Kryptographie und X.509-Konzepten (RFC 5280) werden vorausgesetzt.

Warum Client-Zertifikate?

Passwörter erfordern das Speichern eines Secrets pro Device in Honos Credentials Service, das dann mit dem vom Device gelieferten Passwort verglichen wird. Client-Zertifikate eliminieren den Bedarf an per-Device-Secrets. Durch Registrierung eines einzelnen Trust Anchors pro Tenant können alle Device-Zertifikate im TLS-Handshake mittels des öffentlichen Tenant-Keys validiert werden.

Tenant Certificate Authority erstellen

Generieren Sie das RSA-Key-Pair und das selbstsignierte Zertifikat des Tenants. Diese signieren alle Device-Zertifikate.

$ openssl genrsa -out tenant-key.pem 4096
$ openssl req -x509 -key tenant-key.pem -out tenant-cert.pem -days 365 -subj "/O=ACME Inc./CN=Sensors"

Nutzen Sie nur Standard-X.500-Attribute (CN, L, ST, O, OU, C, STREET, DC, UID), um den DN einfach zu halten.

Tenant registrieren

Registrieren Sie den Trust Anchor bei Hono. Das folgende Beispiel nutzt die Hono Sandbox (v0.9-M2 oder neuer). Ersetzen Sie ACME durch eine einzigartige Tenant-ID für Ihre Instanz.

$ TENANT="ACME"
$ SUBJECT=$(openssl x509 -in tenant-cert.pem -noout -subject -nameopt RFC2253 | sed s/^subject=//)
$ PK=$(openssl x509 -in tenant-cert.pem -noout -pubkey | sed /^---/d | sed -z 's/\n//g')
$ cat < tenant.json
{
  "tenant-id": "$TENANT",
  "trusted-ca": {
    "subject-dn": "$SUBJECT",
    "public-key": "$PK"
  }
}
EOS
$ curl -i -H "Content-Type: application/json" -H "Expect:" --data-binary @tenant.json https://hono.eclipse.org:28443/tenant

Device-Zertifikat erstellen

Generieren Sie ein Device-Key-Pair und ein vom Tenant-CA signiertes Zertifikat.

$ openssl genrsa -out device-key.pem 4096
$ openssl req -new -key device-key.pem -subj "\/O=ACME Inc.\/CN=Hot Fuzz Device" | \
  openssl x509 -req -days 365 -out device-cert.pem -CA tenant-cert.pem -CAkey tenant-key.pem -CAcreateserial

Device registrieren

Registrieren Sie eine Device-ID beim Tenant.

$ curl -i -H "Content-Type: application/json" --data-binary '{"device-id":"hot-fuzz"}' https://hono.eclipse.org:28443/registration/$TENANT

Subject DN des Devices registrieren

Verknüpfen Sie den Subject DN des Device-Zertifikats mit der Device-ID.

$ SUBJECT=$(openssl x509 -in device-cert.pem -noout -subject -nameopt RFC2253 | sed s/^subject=//)
$ cat < credentials.json
{
  "device-id": "hot-fuzz",
  "type": "x509-cert",
  "auth-id": "$SUBJECT",
  "secrets": [{}]
}
EOS
$ curl -i -H "Content-Type: application/json" --data-binary @credentials.json https://hono.eclipse.org:28443/credentials/$TENANT

Verbindung testen

Starten Sie einen Consumer für den Tenant und publizieren Sie Telemetrie mittels Device-Zertifikat.

# Consumer starten
java -jar hono-cli-*-exec.jar \
  --hono.client.host=hono.eclipse.org \
  --hono.client.port=15671 \
  --hono.client.tlsEnabled=true \
  --hono.client.username=consumer@HONO \
  --hono.client.password=verysecret \
  --spring.profiles.active=receiver \
  --tenant.id=$TENANT

# Telemetrie via MQTT publizieren
mosquitto_pub -h hono.eclipse.org -p 8883 \
  --capath /etc/ssl/certs/ \
  --cert device-cert.pem \
  --key device-key.pem \
  -q 1 -t telemetry -m "Hello there"

Bei Erfolg zeigt die Consumer-Konsole die Message. Auch via HTTP möglich:

curl -i --cert device-cert.pem --key device-key.pem \
  -H "Content-Type: plain/text" -H "Expect:" \
  --data-binary "Hello there" https://hono.eclipse.org:8443/telemetry

Internet der Dinge-Technologie

  1. Festkörperbauelemente-Theorie: Von der Physik zur praktischen Anwendung
  2. Eclipse Hono startet MongoDB-basiertes Device Registry – skalierbar, produktionsreif
  3. Eclipse Hono 1.0.0 Launch: Einheitliche Open-Source IoT-Konnektivitätsplattform
  4. Zuverlässige Power-On-Lösungen für batterieoperierte Medizinprodukte
  5. Fortschritte in der Medizintechnik verfolgen
  6. LM35-basiertes Temperatursteuerungssystem mit AT89S52 Mikrocontroller
  7. Arm stärkt IoT-Konnektivität und Gerätemanagement durch Stream Technologies-Übernahme
  8. IoT-Geräte-Schwachstellen machen Smart Home angreifbar: Die Credential-Compromise-Bedrohung
  9. Unkonfigurierte IoT-Geräte: Die verborgene Bedrohung für Ihr Smart Home
  10. Embedded Hardware Hacking für IoT-Geräte: Tools, Techniken und Business-Implikationen