Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Technologie de l'Internet des objets

Authentification sécurisée des appareils par certificats X.509 dans Eclipse Hono

Ces derniers mois, la couverture médiatique a mis en lumière des appareils IoT insécurisés qui ne respectent pas les standards de sécurité de base. Une préoccupation récurrente est la confidentialité des données transmises des appareils vers les services cloud. Surprenamment, beaucoup d'appareils envoient des données sur réseaux publics non chiffrés, même si les protocoles basés TCP/IP comme HTTP et MQTT supportent le chiffrement TLS.

Eclipse Hono a activé TLS pour ses adapters HTTP et MQTT depuis le début. Le milestone 0.9‑M2 ajoute maintenant le support de l'authentification par certificat client X.509 pendant la handshake TLS, permettant aux appareils d'utiliser une paire de clés au lieu d'un username/password.

Appel à tous les développeurs

Le plus grand hackathon IoT d'Europe revient à Berlin les 14‑15 mai 2023. Rejoignez 700+ développeurs pour des défis domain‑spécifiques, apprenez, networkez, et amusez‑vous.

Dans ce guide, nous parcourons un exemple complet : créer et enregistrer une ancre de confiance tenant‑spécifique, générer un certificat appareil, enregistrer son DN subject, et utiliser le certificat pour authentifier l'appareil contre l'adapter MQTT de Hono. Une connaissance pratique de la cryptographie RSA et des concepts X.509 (RFC 5280) est assumée.

Pourquoi les certificats clients ?

L'utilisation de mots de passe nécessite de stocker un secret par appareil dans le service Credentials de Hono, qui est ensuite comparé au mot de passe fourni par l'appareil. Les certificats clients éliminent le besoin de secrets par appareil. En enregistrant une seule ancre de confiance pour un tenant, tous les certificats appareils peuvent être validés dans la handshake TLS en utilisant la clé publique du tenant.

Créer une autorité de certification tenant

Générez la paire de clés RSA du tenant et le certificat auto‑signé. Ceux‑ci signeront tous les certificats appareils.

$ 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"

Utilisez uniquement les attributs X.500 standards (CN, L, ST, O, OU, C, STREET, DC, UID) pour garder le DN simple.

Enregistrer le tenant

Enregistrez l'ancre de confiance avec Hono. L'exemple suivant utilise le Hono Sandbox (v0.9‑M2 ou ultérieur). Remplacez ACME par un tenant ID unique pour votre instance.

$ 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

Créer un certificat appareil

Générez une paire de clés appareil et un certificat signé par la CA du tenant.

$ 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

Enregistrer l'appareil

Enregistrez un device ID avec le tenant.

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

Enregistrer le DN subject de l'appareil

Associez le DN subject du certificat appareil au 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

Tester la connexion

Démarrez un consumer pour le tenant et publiez de la télémétrie en utilisant le certificat appareil.

# Start consumer
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

# Publish telemetry via MQTT
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"

Si succès, la console consumer affichera le message. Vous pouvez aussi publier via HTTP :

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

Technologie de l'Internet des objets

  1. Eclipse Hono lance un registre de devices basé MongoDB — Scalable, Production-Ready
  2. Eclipse Hono 1.0.0 lance : Plateforme de connectivité IoT unifiée, open-source
  3. Solutions fiables de mise sous tension pour dispositifs médicaux à batterie
  4. Suivi des avancées technologiques dans les dispositifs médicaux
  5. Système de contrôle de température basé LM35 avec microcontrôleur AT89S52
  6. Arm renforce la connectivité et la gestion d'appareils IoT via l'acquisition de Stream Technologies
  7. Vulnérabilités des appareils IoT exposent la maison intelligente à l'attaque : la menace de compromission des identifiants
  8. Appareils IoT non configurés : la menace cachée pour votre maison intelligente
  9. Hacking hardware embarqué pour appareils IoT : outils, techniques et implications business