Configurer un appareil IoT Edge en tant que passerelle transparente

S’applique à :IoT Edge 1.4 checkmark IoT Edge 1.4

Important

IoT Edge 1.4 est la version prise en charge. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.

Cet article donne des instructions détaillées pour configurer un appareil IoT Edge comme passerelle transparente permettant à d’autres appareils de communiquer avec IoT Hub. Cet article utilise le terme passerelle ioT Edge pour désigner un appareil IoT Edge configuré comme passerelle transparente. Pour plus d’informations, consultez Guide pratique pour utiliser un appareil IoT Edge en tant que passerelle.

Remarque

Les appareils en aval ne peuvent pas utiliser le chargement de fichier.

La configuration d’une connexion de passerelle transparente s’effectue en trois grandes étapes. Cet article décrit la première étape :

  1. Configurez l’appareil de passerelle en tant que serveur pour permettre aux appareils en aval de s’y connecter en toute sécurité. Configurez la passerelle pour recevoir des messages des appareils en aval et les acheminer vers la destination qui convient.
  2. Créez une identité d’appareil pour l’appareil en aval afin qu’il puisse s’authentifier sur IoT Hub. Configurez l’appareil en aval pour envoyer des messages par le biais de l’appareil de passerelle. Ces étapes sont décrites dans Authentifier un appareil en aval auprès d'Azure IoT Hub.
  3. Connectez l’appareil en aval à l’appareil de passerelle et commencez à envoyer des messages. Pour plus d’informations sur ces étapes, voir Connecter un appareil en aval à une passerelle Azure IoT Edge.

Pour qu’un appareil fasse office de passerelle, il doit se connecter de manière sécurisée aux appareils en aval qui lui sont associés. Azure IoT Edge vous permet d’utiliser une infrastructure à clé publique (PKI) pour configurer des connexions sécurisées entre les appareils. Dans ce cas, nous autorisons un appareil en aval à se connecter à un appareil IoT Edge faisant office de passerelle transparente. Pour assurer un niveau raisonnable de sécurité, l’appareil en aval doit confirmer l’identité de l’appareil de passerelle. Cette vérification d’identité empêche vos appareils de se connecter à des passerelles potentiellement malveillantes.

Un appareil en aval est une application ou une plateforme dont l’identité a été créée avec le service cloud Azure IoT Hub. Ces applications utilisent souvent Azure IoT device SDK. Un appareil en aval peut même être une application fonctionnant sur l’appareil de passerelle IoT Edge proprement dit.

Vous pouvez créer n’importe quelle infrastructure de certificat permettant l’approbation requise pour votre topologie de l’appareil à la passerelle. Dans cet article, nous nous basons sur la même configuration de certificat que vous utiliseriez pour activer la sécurité d’autorité de certification X.509 dans IoT Hub, ce qui implique d’avoir un certificat d’autorité de certification X.509 associé à un hub IoT spécifique (l’autorité de certification racine du hub IoT), une série de certificats signés par cette autorité de certification ainsi qu’une autorité de certification pour l’appareil IoT Edge.

Remarque

Le terme certificat d’autorité de certification racine utilisé dans ces articles désigne le certificat public de l’autorité la plus haute dans la hiérarchie de certificats PKI, et pas obligatoirement le certificat racine d’une autorité de certification syndiquée. La plupart du temps, il s’agit en fait d’un certificat public d’une autorité de certification intermédiaire.

Les étapes suivantes vous guident tout au long du processus de création des certificats et de leur installation aux bons emplacements sur la passerelle. Vous pouvez utiliser n’importe quel ordinateur pour générer les certificats, puis les copier sur votre appareil IoT Edge.

Prérequis

Un appareil Linux ou Windows avec IoT Edge installé.

Si vous n’avez aucun appareil prêt, vous pouvez en créer un sur une machine virtuelle Azure. Suivez les étapes décrites dans Déployer votre premier module IoT Edge sur un appareil Linux virtuel pour créer un IoT Hub, créer une machine virtuelle et configurer le runtime IoT Edge.

Configurer le certificat d’autorité de certification d’appareil

Toutes les passerelles IoT Edge requièrent l’installation d’un certificat d’autorité de certification d’appareil. Le démon de sécurité IoT Edge utilise le certificat d’autorité de certification de l’appareil IoT Edge pour signer un certificat d’autorité de certification de charge de travail, qui à son tour signe un certificat de serveur pour le hub IoT Edge. La passerelle présente son certificat de serveur à l’appareil en aval lors de l’établissement de la connexion. L’appareil en aval vérifie que le certificat de serveur fait partie d’une chaîne de certificats qui remonte jusqu’au certificat d’autorité de certification racine. Ce processus permet à l’appareil en aval de garantir que la passerelle provient d’une source approuvée. Pour plus d’informations, consultez Comprendre comment Azure IoT Edge utilise les certificats.

Screenshot that shows the gateway certificate setup.

Le certificat d’autorité de certification racine et le certificat d’autorité de certification de l’appareil (avec sa clé privée) doivent être présents sur l’appareil de passerelle IoT Edge et configurés dans le fichier config IoT Edge. N’oubliez pas que dans ce cas, le certificat d’autorité de certification racine correspond à la plus haute autorité de certification pour ce scénario IoT Edge. Le certificat d’autorité de certification de l’appareil de passerelle et les certificats des appareils en aval doivent s’appliquer au même certificat d’autorité de certification racine.

Conseil

Le processus d’installation du certificat d’autorité de certification racine et du certificat d’autorité de certification d’appareil sur un appareil IoT Edge est également expliqué plus en détail dans Gérer des certificats sur un appareil IoT Edge.

Préparez les fichiers suivants :

  • Certificat d’autorité de certification racine
  • Certificat d’autorité de certification d’appareil
  • Clé privée d’autorité de certification d’appareil

Pour les scénarios de production, vous devez générer ces fichiers avec votre propre autorité de certification. Pour les scénarios de développement et de test, vous pouvez utiliser des certificats de démonstration.

Créer des certificats de démonstration

Si vous n’avez pas votre propre autorité de certification et souhaitez utiliser des certificats de démonstration, suivez les instructions fournies dans Créer des certificats de démonstration pour tester les fonctionnalités de l’appareil IoT Edge pour créer vos fichiers. Sur cette page, vous devez effectuer les étapes suivantes :

  1. Pour commencer, configurez les scripts pour générer des certificats sur votre appareil.
  2. Créez un certificat d’autorité de certification racine. Au terme de ces instructions, vous disposerez d’un fichier de certificat d’autorité de certification racine <path>/certs/azure-iot-test-only.root.ca.cert.pem.
  3. Créez des certificats d’autorité de certification d’appareil IoT Edge. Au terme de ces instructions, vous disposerez d’un certificat d’autorité de certification d’appareil <path>/certs/iot-edge-device-ca-<cert name>-full-chain.cert.pem et sa clé privée <path>/private/iot-edge-device-ca-<cert name>.key.pem.

Copier des certificats sur l’appareil

  1. Vérifiez que le certificat répond aux exigences de format.

  2. Si vous avez créé les certificats sur un autre ordinateur, copiez-les sur votre appareil IoT Edge. Vous pouvez utiliser un lecteur USB, un service comme Azure Key Vault ou une fonction comme Copie de fichiers sécurisée.

  3. Déplacez les fichiers vers le répertoire préféré pour les certificats et les clés. Utilisez /var/aziot/certs pour les certificats et /var/aziot/secrets pour les clés.

  4. Créez les répertoires de certificats et de clés et définissez les autorisations. Vous devez stocker vos certificats et clés dans le répertoire préféré /var/aziot. Utilisez /var/aziot/certs pour les certificats et /var/aziot/secrets pour les clés.

    # If the certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
  5. Modifiez la propriété et les autorisations des certificats et des clés.

    # Give aziotcs ownership to certificates
    # Read and write for aziotcs, read-only for others
    sudo chown -R aziotcs:aziotcs /var/aziot/certs
    sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;
    
    # Give aziotks ownership to private keys
    # Read and write for aziotks, no permission for others
    sudo chown -R aziotks:aziotks /var/aziot/secrets
     sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;
    

Configurer des certificats sous Linux

  1. sur votre appareil IoT Edge, ouvrez le fichier config : /etc/aziot/config.toml. Si vous utilisez IoT Edge pour Linux sur Windows, vous devez vous connecter à la machine virtuelle EFLOW à l’aide de la cmdlet PowerShell Connect-EflowVm.

    Conseil

    Si le fichier config n’existe pas encore sur votre appareil, utilisez /etc/aziot/config.toml.edge.template comme modèle pour en créer un.

  2. Recherchez le paramètre trust_bundle_cert. Supprimez les marques de commentaire de cette ligne et fournissez l’URI du fichier de certificat d’autorité de certification racine sur votre appareil.

  3. Recherchez la section [edge_ca] du fichier. Supprimez les marques de commentaire des trois lignes de cette section et fournissez les URI de vos fichiers de certificat et de clé en tant que valeurs pour les propriétés suivantes :

    • cert : certificat d’autorité de certification d’appareil
    • pk : clé privée d’autorité de certification d’appareil
  4. Enregistrez et fermez le fichier.

  5. Sélectionnez Appliquer pour appliquer vos modifications.

    sudo iotedge config apply
    

Déployer edgeHub et acheminer les messages

Les appareils situés en aval envoient des données de télémétrie et des messages à l'appareil de passerelle. Le module IoT Edge Hub est chargé d'acheminer les informations vers d'autres modules ou vers IoT Hub. Pour préparer votre appareil de passerelle à cette fonction, assurez-vous que :

  • Le module IoT Edge Hub est déployé sur l'appareil.

    À la première installation d’IoT Edge sur un appareil, un seul module système démarre automatiquement : l’agent IoT Edge. Une fois que vous avez créé le premier déploiement d'un appareil, le deuxième module système et le hub IoT Edge démarre également. Si le module edgeHub ne fonctionne pas sur votre appareil, créez un déploiement pour votre appareil.

  • Le module IoT Edge Hub dispose d'itinéraires configurés pour gérer les messages entrants des appareils situés en aval.

    L'appareil de passerelle doit disposer d'un itinéraire pour gérer les messages des appareils situés en aval, faute de quoi ces messages ne seront pas traités. Vous pouvez envoyer les messages aux modules situés sur l'appareil de passerelle ou directement à IoT Hub.

Pour déployer le module IoT Edge Hub et le configurer avec des itinéraires pour gérer les messages entrants provenant d'appareils situés en aval, procédez comme suit :

  1. Accédez à votre hub IoT dans le portail Azure.

  2. Accédez à Appareils dans le menu Gestion des appareils et sélectionnez l’appareil IoT Edge à utiliser comme passerelle.

  3. Sélectionnez Définir modules.

  4. Sur la page Modules, vous pouvez ajouter tous les modules que vous souhaitez déployer sur l'appareil de passerelle. Pour les besoins de cet article, nous nous concentrons sur la configuration et le déploiement du module edgeHub, qui n'a pas besoin d'être défini explicitement sur cette page.

  5. Sélectionnez Suivant : Itinéraires.

  6. Sur la page Itinéraires, assurez-vous qu'il existe un itinéraire pour gérer les messages provenant d'appareils situés en aval. Par exemple :

    • Un itinéraire qui envoie à IoT Hub tous les messages provenant d'un module ou d'un appareil situé en aval :

      • Nom : allMessagesToHub
      • Valeur : FROM /messages/* INTO $upstream
    • Un itinéraire qui envoie à IoT Hub tous les messages provenant de tous les appareils en aval :

      • Nom : allDownstreamToHub
      • Valeur : FROM /messages/* WHERE NOT IS_DEFINED ($connectionModuleId) INTO $upstream

      Cet itinéraire fonctionne car, contrairement aux messages provenant des modules IoT Edge, les messages provenant des appareils situés en aval ne sont pas associés à un ID de module. L'utilisation de la clause WHERE de l'itinéraire nous permet de filtrer tous les messages dotés de cette propriété système.

      Pour plus d’informations sur le routage des messages, consultez Déployer des modules et établir des itinéraires.

  7. Une fois votre ou vos itinéraires créés, sélectionnez Vérifier + créer.

  8. Dans la page Vérifier + créer, sélectionnez Créer.

Ouvrir des ports sur l’appareil de passerelle

Les appareils IoT Edge standard peuvent fonctionner sans connexions entrantes, car toutes les communications avec le hub IoT s’effectuent par le biais de connexions sortantes. Les appareils de passerelle fonctionnent différemment, car ils doivent recevoir les messages de leurs appareils en aval. S’il y a un pare-feu entre les appareils en aval et l’appareil de passerelle, les communications doivent également pouvoir se faire par le pare-feu.

Dans un scénario de passerelle opérationnel, au moins un des protocoles pris en charge par le hub IoT Edge doit être ouvert pour recevoir le trafic entrant des appareils en aval. Les protocoles pris en charge sont les suivants : MQTT, AMQP, HTTPS, MQTT sur Websockets et AMQP sur WebSockets.

Port Protocole
8883 MQTT
5671 AMQP
443 HTTPS
MQTT+WS
AMQP + WS

Étapes suivantes

Maintenant que vous disposez d’un appareil IoT Edge configuré en tant que passerelle transparente, il vous faut configurer vos appareils en aval de façon à ce qu’ils approuvent la passerelle et lui envoient des messages. Pour poursuivre la configuration de votre scénario de passerelle transparente, suivez les étapes décrites dans Authentifier un appareil en aval auprès d’Azure IoT Hub.