Créer et approvisionner un appareil IoT Edge sur Linux avec des certificats X.509

S’applique à : Coche IoT Edge 1.5 IoT Edge 1.5 Coche IoT Edge 1.4 IoT Edge 1.4

Important

IoT Edge 1.5 LTS et IoT Edge 1.4 LTS sont des versions prises en charge. IoT Edge 1.4 LTS sera en fin de vie le 12 novembre 2024. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.

Cet article fournit des instructions de bout en bout pour l’inscription et l’approvisionnement d’un appareil IoT Edge Linux, incluant l’installation d’IoT Edge.

Chaque appareil qui se connecte à un hub IoT possède un ID d’appareil qui sert au suivi des communications cloud-à-appareil ou appareil-à-cloud. Vous configurez un appareil avec ses informations de connexion, qui comprennent le nom d’hôte du hub IoT, l’ID d’appareil ainsi que les informations que l’appareil utilise pour s’authentifier auprès d’IoT Hub.

Les étapes de cet article suivent un processus appelé approvisionnement manuel qui consiste à connecter un seul appareil à son hub IoT. Avec le provisionnement manuel, vous avez le choix entre deux méthodes d’authentification des appareils IoT Edge :

  • Clés symétriques : quand vous créez une identité d’appareil dans IoT Hub, le service crée deux clés. Vous placez l’une des clés sur l’appareil, lequel présente la clé à IoT Hub au moment de l’authentification.

    Cette méthode d’authentification est plus rapide pour commencer, mais moins sûre que l’autre.

  • X.509 autosigné : vous créez deux certificats d’identité X.509 que vous placez sur l’appareil. Quand vous créez une identité d’appareil dans IoT Hub, vous fournissez les empreintes numériques des deux certificats. Quand l’appareil s’authentifie auprès de IoT Hub, il présente un certificat et IoT Hub vérifie que le certificat correspond à son empreinte numérique.

    Cette méthode d’authentification étant plus sécurisée, elle est recommandée dans les scénarios de production.

Cet article traite de l’utilisation de certificats X.509 comme méthode d’authentification. Si vous souhaitez utiliser des clés symétriques, consultez Créer et provisionner un appareil IoT Edge sur Linux à l’aide de clés symétriques.

Remarque

Si vous avez de nombreux appareils à configurer et que vous ne souhaitez pas les provisionner manuellement, consultez l’un des articles suivants pour découvrir comment IoT Edge fonctionne avec le service IoT Hub Device Provisioning :

Prérequis

Cet article traite de l’inscription de votre appareil IoT Edge et de l’installation d’IoT Edge sur l’appareil. Ces tâches ont des conditions préalables et différents utilitaires sont utilisés pour les accomplir. Assurez-vous que toutes les conditions préalables sont remplies avant de continuer.

Outils de gestion des appareils

Vous avez le choix d’utiliser le portail Azure, Visual Studio Code ou Azure CLI pour inscrire votre appareil. Chaque utilitaire a ses propres prérequis ou doit être installé :

Un hub IoT gratuit ou standard dans votre abonnement Azure.

Exigences relatives aux appareils

Un appareil Linux x64, ARM32 ou ARM64.

Microsoft publie des packages d’installation pour divers systèmes d’exploitation.

Pour les dernières informations sur les systèmes d’exploitation actuellement pris en charge pour les scénarios de production, consultez Systèmes pris en charge par Azure IoT Edge.

Générer des certificats d’identité d’appareil

L’approvisionnement manuel avec des certificats X.509 requiert IoT Edge version 1.0.10 ou ultérieure.

Lorsque vous configurez un appareil IoT Edge avec des certificats X.509, vous utilisez ce que l’on appelle un certificat d’identité d’appareil. Ce certificat est utilisé uniquement pour approvisionner un appareil IoT Edge et l’authentifier avec Azure IoT Hub. Il s’agit d’un certificat feuille qui ne signe pas d’autres certificats. Le certificat d’identité d’appareil est distinct des certificats d’autorité de certification que l’appareil IoT Edge présente aux modules ou aux appareils en aval à des fins de vérification.

Pour l’authentification par certificat X.509, les informations d’authentification de chaque appareil sont fournies sous la forme d’empreintes numériques extraites de vos certificats d’identité d’appareil. Ces empreintes numériques, fournies à IoT Hub au moment de l’inscription de l’appareil, permettent au service de reconnaître l’appareil qui se connecte.

Pour plus d’informations sur l’utilisation des certificats d’autorité de certification dans les appareils IoT Edge, consultez Comprendre comment Azure IoT Edge utilise les certificats.

Les fichiers suivants sont nécessaires pour le provisionnement manuel avec X.509 :

  • Deux certificats d’identité d’appareil avec leurs certificats de clé privée correspondants au format .cer ou .pem. Vous avez besoin de deux certificats d’identité d’appareil pour la rotation des certificats. Une bonne pratique consiste à préparer deux certificats d’identité d’appareil différents avec des dates d’expiration différentes. Si un certificat expire, l’autre est toujours valide et vous laisse le temps d’effectuer la rotation du certificat expiré.

    Un ensemble de fichiers de certificat et de clé est fourni au runtime IoT Edge. Quand vous créez des certificats d’identité d’appareil, définissez le nom commun du certificat (CN) avec l’ID d’appareil que l’appareil doit avoir dans votre hub IoT.

  • Empreintes numériques tirées des deux certificats d’identité d’appareil. IoT Hub nécessite deux empreintes lors de l’inscription d’un appareil IoT Edge. Vous ne pouvez utiliser qu’un seul certificat pour l’inscription. Pour utiliser un seul certificat, définissez l’empreinte du certificat pour les empreintes primaires et secondaires lors de l’inscription de l’appareil.

    Les valeurs d’empreinte numérique sont constituées de 40 caractères hexadécimaux pour les hachages SHA-1 ou de 64 caractères hexadécimaux pour les hachages SHA-256. Les deux empreintes numériques sont fournies pour IoT Hub lors de l’enregistrement de l’appareil.

    L’une des méthodes permettant de récupérer l’empreinte numérique d’un certificat consiste à utiliser la commande openssl suivante :

    openssl x509 -in <certificate filename>.pem -text -fingerprint
    

    L’empreinte est incluse dans la sortie de cette commande. Par exemple :

    SHA1 Fingerprint=D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12
    

Si vous n’avez pas de certificats disponibles, vous pouvez créer des certificats de démonstration pour tester les fonctionnalités de l’appareil IoT Edge. Suivez les instructions de cet article pour configurer des scripts de création de certificat, créer un certificat d’autorité de certification racine et créer un certificat d’identité d’appareil IoT Edge. Pour les tests, vous pouvez créer un certificat d’identité d’appareil unique et utiliser la même empreinte pour les valeurs des empreintes primaire et secondaire lors de l’inscription de l’appareil dans IoT Hub.

Inscrire votre appareil

Vous avez le choix d’utiliser le portail Azure, Visual Studio Code ou Azure CLI pour inscrire votre appareil.

Dans votre hub IoT dans le portail Azure, les appareils IoT Edge sont créés et managés séparément des appareils IoT qui ne sont pas utilisés en périphérie.

  1. Connectez-vous au portail Azure et accédez à votre IoT Hub.

  2. Dans le volet de gauche, sélectionnez Appareils dans le menu, puis sélectionnez Ajouter un appareil.

  3. Dans la page Créer un appareil, fournissez les informations suivantes :

    • Créez un ID d’appareil descriptif. Notez cet ID d’appareil pour pouvoir l’utiliser plus tard.
    • Cochez la case Appareil IoT Edge.
    • Sélectionnez X.509 autosigné comme type d’authentification.
    • Fournissez les empreintes numériques des certificats d’identité principal et secondaire. Les valeurs d’empreinte numérique sont constituées de 40 caractères hexadécimaux pour les hachages SHA-1 ou de 64 caractères hexadécimaux pour les hachages SHA-256. Le portail Azure prend uniquement en charge les valeurs hexadécimales. Supprimez les séparateurs de colonnes et les espaces des valeurs d’empreinte avant de les entrer dans le portail. Par exemple, D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12 est entré sous la forme D268D9049F1A4D6AFD8477687BC633C032375112.

    Conseil

    Si vous testez et souhaitez utiliser un certificat, vous pouvez utiliser le même certificat pour les empreintes primaires et secondaires.

  4. Sélectionnez Enregistrer.

Maintenant que vous avez un appareil inscrit dans IoT Hub, récupérez les informations à utiliser pour terminer l’installation et le provisionnement du runtime IoT Edge.

Afficher les appareils inscrits et récupérer les informations de provisionnement

Pour les appareils qui utilisent l’authentification par certificat X.509, vous devez récupérer le nom de leur hub IoT, leur nom d’appareil et leurs fichiers de certificat pour terminer l’installation et le provisionnement du runtime IoT Edge.

Les appareils compatibles avec Edge qui se connectent à votre hub IoT sont répertoriés dans la page Appareils. Vous pouvez filtrer la liste par type d’appareil Appareils IoT Edge.

Installer IoT Edge

Dans cette section, vous allez préparer votre machine virtuelle ou votre appareil physique Linux à IoT Edge. Ensuite, vous installez IoT Edge.

Exécutez les commandes suivantes pour ajouter le dépôt de packages, puis ajoutez la clé de signature du package Microsoft à votre liste de clés approuvées.

Important

Le 30 juin 2022, Raspberry Pi OS Stretch a été retiré de la liste de prise en charge des systèmes d’exploitation de niveau 1. Pour éviter des vulnérabilités de sécurité potentielles, mettez à jour votre système d’exploitation hôte vers Bullseye.

Pour les systèmes d’exploitation de plateforme pris en charge de niveau 2, les packages d’installation sont disponibles dans les versions d'Azure IoT Edge. Voir les étapes d’installation dans Installation d’une version spécifique ou hors connexion.

L’installation peut se faire avec quelques commandes. Ouvrez un terminal et exécutez les commandes suivantes :

  • 24.04 :

    wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 22.04 :

    wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 20.04 :

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

Pour obtenir plus d’informations sur les versions des systèmes d’exploitation, voir Plateformes prises en charge par Azure IoT Edge.

Remarque

Les packages logiciels Azure IoT Edge sont soumis aux termes du contrat de licence situés dans chaque package (usr/share/doc/{package-name} ou dans le répertoire LICENSE). Lisez les termes du contrat de licence avant d’utiliser un package. Le fait d’installer et d’utiliser un package revient à accepter ces termes. Si vous n’acceptez pas les termes du contrat de licence, n’utilisez pas le package en question.

Installer un moteur de conteneur

Azure IoT Edge s’appuie sur un runtime de conteneur compatible avec OCI. Dans les scénarios de production, nous vous recommandons d’utiliser le moteur Moby. Le moteur Moby est le moteur de conteneur officiellement pris en charge avec IoT Edge. Les images conteneur Docker CE/EE sont compatibles avec le runtime Moby. Si vous utilisez des snaps Ubuntu Core, le snap Docker est géré par Canonical et pris en charge pour les scénarios de production.

Installez le moteur Moby.

sudo apt-get update; \
  sudo apt-get install moby-engine

Par défaut, le moteur de conteneur ne définit pas de limites de taille pour le journal de conteneur. Au fil du temps, cela peut amener l’appareil à se remplir de journaux et à manquer d’espace disque. Toutefois, vous pouvez configurer votre journal pour qu’il s’affiche localement, bien que ce soit facultatif. Pour en savoir plus sur la configuration de la journalisation, consultez Check-list du déploiement de production.

Les étapes suivantes vous indiquent comment configurer votre conteneur pour utiliser le pilote de journalisation local comme mécanisme de journalisation.

  1. Créez ou modifiez le fichier config existant du démon Docker

    sudo nano /etc/docker/daemon.json
    
  2. Définissez le pilote de journalisation par défaut sur le pilote de journalisation local, comme indiqué dans l’exemple.

       {
          "log-driver": "local"
       }
    
  3. Redémarrez le moteur de conteneur pour appliquer les changements.

    sudo systemctl restart docker
    

Installer le runtime IoT Edge

Le service IoT Edge fournit et gère les standards de sécurité sur l’appareil IoT Edge. Le service se lance à chaque démarrage et amorce l’appareil en démarrant le reste du runtime IoT Edge.

Remarque

À partir de la version 1.2, le service d’identité IoT gère l’approvisionnement et la gestion des identités pour IoT Edge et pour d’autres composants d’appareil qui doivent communiquer avec IoT Hub.

La procédure de cette section représente le processus classique d’installation de la dernière version IoT Edge sur un appareil disposant d’une connexion Internet. Si vous devez installer une version spécifique, comme une préversion, ou si vous devez installer en mode hors connexion, suivez les étapes d’installation d’une version hors connexion ou spécifique plus loin dans cet article.

Conseil

Si vous disposez déjà d’un appareil IoT Edge exécutant une version plus ancienne et que vous souhaitez effectuer une mise à niveau vers la dernière version, suivez les étapes décrites dans Mettre à jour le runtime et le démon de sécurité IoT Edge. Les versions ultérieures sont si différente des versions précédentes d’IoT Edge que des étapes spécifiques sont nécessaires pour la mise à niveau.

Installez la dernière version d’IoT Edge et le package du service d’identité IoT (si vous n’êtes pas encore à jour) :

  • 22.04 :

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    
  • 20.04 :

    sudo apt-get update; \
       sudo apt-get install aziot-edge defender-iot-micro-agent-edge
    

Le package defender-iot-micro-agent-edge facultatif inclut le micro-agent de sécurité Microsoft Defender pour IoT qui fournit une visibilité des points de terminaison sur la gestion de la posture de sécurité, les vulnérabilités, la détection des menaces, la gestion de la flotte et bien plus encore pour vous aider à sécuriser vos appareils IoT Edge. Il est recommandé d’installer le micro-agent avec l’agent Edge pour activer la supervision et le renforcement de la sécurité de vos appareils Edge. Pour en savoir plus sur Microsoft Defender pour IoT, consultez Présentation de Microsoft Defender pour IoT pour les générateurs d’appareils.

Provisionnement de l’appareil avec son identité cloud

Maintenant que le moteur de conteneur et le runtime IoT Edge sont installés sur votre appareil, vous êtes prêt à configurer l’appareil avec ses informations d’authentification et d’identité cloud.

  1. Créez le fichier de configuration pour votre appareil à partir d’un fichier de modèle fourni dans le cadre de l’installation d’IoT Edge.

    sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
    
  2. Sur l’appareil IoT Edge, ouvrez le fichier de configuration.

    sudo nano /etc/aziot/config.toml
    
  3. Recherchez la section Provisioning du fichier, et supprimez les marques de commentaire des lignes sur l’approvisionnement manuel avec un certificat d’identité X.509. Veillez à ajouter des marques de commentaire sur les autres sections de provisionnement.

    # Manual provisioning with x.509 certificates
    [provisioning]
    source = "manual"
    iothub_hostname = "REQUIRED_IOTHUB_HOSTNAME"
    device_id = "REQUIRED_DEVICE_ID_PROVISIONED_IN_IOTHUB"
    
    [provisioning.authentication]
    method = "x509"
    
    identity_cert = "REQUIRED_URI_OR_POINTER_TO_DEVICE_IDENTITY_CERTIFICATE"
    
    identity_pk = "REQUIRED_URI_TO_DEVICE_IDENTITY_PRIVATE_KEY"
    

Mettez à jour les champs suivants :

  • iothub_hostname : nom d’hôte de l’hub IoT auquel l’appareil doit se connecter. Par exemple : {IoT hub name}.azure-devices.net.
  • device_id : ID que vous avez indiqué lors de l’inscription de l’appareil.
  • identity_cert : URI d’un certificat d’identité sur l’appareil, par exemple : file:///path/identity_certificate.pem. Ou émettez le certificat de manière dynamique en utilisant EST ou une autorité de certification locale.
  • identity_pk : URI du fichier de clé privée pour le certificat d’identité fourni. par exemple : file:///path/identity_key.pem. Ou fournissez un URI PKCS#11, puis fournissez vos informations de configuration dans la section

PKCS#11 plus loin dans le fichier de configuration.

Pour plus d’informations sur les certificats, consultez Gérer les certificats IoT Edge.

Enregistrez le fichier et fermez-le.

CTRL + X, Y, Enter

Après avoir entré les informations d’approvisionnement dans le fichier de configuration, appliquez vos modifications :

sudo iotedge config apply

Déployer des modules

Pour déployer vos modules IoT Edge, accédez à votre hub IoT dans le Portail Azure, puis :

  1. Sélectionnez Appareils dans le menu IoT Hub.

  2. Sélectionnez votre appareil pour ouvrir sa page.

  3. Sélectionnez l’onglet Définir des modules.

  4. Du fait que nous souhaitons déployer les modules IoT Edge par défaut (edgeAgent et edgeHub), nous n’avons pas besoin d’ajouter d’autres modules à ce volet. Sélectionnez donc Vérifier + créer en bas de la page.

  5. Vous voyez la confirmation JSON de vos modules. Sélectionnez Créer pour déployer les modules.<

Si vous souhaitez obtenir plus d’informations, consultez Déployer un module.

Vérification de la réussite de la configuration

Vérifiez que le runtime a été correctement installé et configuré sur votre appareil IoT Edge.

Conseil

Vous avez besoin de privilèges élevés pour exécuter les commandes iotedge. Une fois que vous vous déconnectez de votre machine et que vous vous reconnectez pour la première fois après avoir installé le runtime IoT Edge, vos autorisations sont automatiquement mises à jour. Dans l’intervalle, ajoutez sudo devant les commandes.

Vérifiez que le service système IoT Edge est en cours d’exécution.

sudo iotedge system status

Une réponse d’état réussie est Ok.

Si vous avez besoin de résoudre les problèmes du service, récupérez les journaux d’activité de ce dernier.

sudo iotedge system logs

Utilisez l’outil check pour vérifier l’état de la configuration et de la connexion de l’appareil.

sudo iotedge check

Vous pouvez prévoir une plage de réponses qui peut inclure OK (vert), Avertissement (jaune) ou Erreur (rouge). Pour résoudre les erreurs courantes, consultez Solutions aux problèmes courants liés à Azure IoT Edge.

Capture d’écran des exemples de réponses à partir de la commande check.

Conseil

Utilisez toujours sudo pour exécuter l’outil de vérification, même après la mise à jour de vos autorisations. L’outil a besoin de privilèges élevés pour accéder au fichier config pour vérifier l’état de la configuration.

Remarque

Sur un appareil nouvellement approvisionné, vous pourriez voir une erreur liée à IoT Edge Hub :

Vérification de disponibilité de la production × : le répertoire de stockage Edge Hub est conservé sur le système de fichiers hôte - Erreur

Impossible de vérifier l’état actuel du conteneur edgeHub

Cette erreur est attendue sur un appareil nouvellement provisionné, car le module IoT Edge Hub n’est pas en cours d’exécution. Pour résoudre l’erreur, dans IoT Hub, définissez les modules de l’appareil et créez un déploiement. La création d’un déploiement pour l’appareil démarre les modules sur l’appareil, y compris le module IoT Edge Hub.

Affichez tous les modules s’exécutant sur votre appareil IoT Edge. Lors du premier démarrage du service, seul le module edgeAgent apparaît dans cette liste. Le module edgeAgent s’exécute par défaut et vous aide à installer et démarrer tous les modules supplémentaires que vous déployez sur votre appareil.

sudo iotedge list

Lorsque vous créez un appareil IoT Edge, le code d’état 417 -- The device's deployment configuration is not set s’affiche dans le portail Azure. Cet état est normal et signifie que l’appareil est prêt à recevoir un déploiement de module.

Installation d’une version spécifique ou hors connexion (facultatif)

Les étapes de cette section concernent les scénarios non couverts par les étapes d’installation standard. Cela peut inclure :

  • Installer IoT Edge en mode hors connexion
  • Installer une version Release candidate

Utilisez les étapes de cette section si vous souhaitez installer une version spécifique du runtime Azure IoT Edge, qui n’est pas disponible via votre gestionnaire de package. La liste des packages Microsoft contient uniquement un ensemble limité de versions récentes et leurs sous-versions. Par conséquent, ces étapes sont destinées à toute personne souhaitant installer une version antérieure ou une version Release Candidate.

Si vous utilisez des snaps Ubuntu, vous pouvez télécharger un snap et l’installer hors connexion. Pour plus d’informations, consultez Télécharger les snaps et les installer hors connexion.

À l’aide de commandes curl, vous pouvez cibler les fichiers de composants directement à partir du référentiel GitHub IoT Edge.

  1. Accédez aux versions d’Azure IoT Edgeet recherchez celle que vous souhaitez cibler.

  2. Développez la section Ressources pour cette version.

  3. Chaque mise en production devrait avoir de nouveaux fichiers pour IoT Edge et le service d’identité. Si vous envisagez d’installer IoT Edge sur un appareil hors connexion, téléchargez ces fichiers à l’avance. Autrement, utilisez les commandes suivantes pour mettre à jour ces composants.

    1. Recherchez le fichier aziot-identity-service correspondant à l’architecture de votre appareil IoT Edge. Cliquez avec le bouton droit de la souris sur le lien de fichier et copiez l’adresse du lien.

    2. Utilisez le lien copié dans la commande suivante pour installer cette version du service d’identité :

      curl -L <identity service link> -o aziot-identity-service.deb && sudo apt-get install ./aziot-identity-service.deb
      

    1. Recherchez le fichier aziot-edge correspondant à l’architecture de votre appareil IoT Edge. Cliquez avec le bouton droit de la souris sur le lien de fichier et copiez l’adresse du lien.

    2. Utilisez le lien copié dans la commande suivante pour installer cette version d’IoT Edge.

      curl -L <iotedge link> -o aziot-edge.deb && sudo apt-get install ./aziot-edge.deb
      

Désinstaller IoT Edge

Si vous souhaitez supprimer l’installation d’IoT Edge de votre appareil, utilisez les commandes suivantes.

Supprimez le runtime IoT Edge.

sudo apt-get autoremove --purge aziot-edge

Omettez l’indicateur --purge si vous prévoyez de réinstaller IoT Edge et d’utiliser les mêmes informations de configuration à l’avenir. Les indicateurs --purge suppriment tous les fichiers associés à IoT Edge, y compris vos fichiers de configuration.

Lors de la suppression du runtime IoT Edge, tous les conteneurs qu’il a créés sont arrêtés, mais continuent d’exister sur votre appareil. Affichez tous les conteneurs pour voir ceux qui restent.

sudo docker ps -a

Supprimez les conteneurs de votre appareil, dont les deux conteneurs de runtime.

sudo docker rm -f <container name>

Enfin, supprimez le runtime du conteneur de votre appareil.

sudo apt-get autoremove --purge moby-engine