Partager via


Créer et provisionner un appareil IoT Edge pour Linux sur Windows à l’aide de certificats X.509

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

Important

Azure IoT Edge 1.5 LTS et IoT Edge 1.4 sont des versions prises en charge. IoT Edge 1.4 LTS arrive en fin de service 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 le provisionnement d’un appareil IoT Edge pour Linux sur Windows.

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 pour Linux sur Windows à 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 de IoT Edge pour Linux sur Windows. 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 Windows avec la configuration minimale requise suivante :

  • Configuration requise

    • Windows 101/11 (Pro, Enterprise, IoT Enterprise)
    • Windows Server 20191/2022
      1 Windows 1 et Windows Server 10 version 2019 build 17763 ou ultérieure, avec toutes les mises à jour cumulatives actuelles installées.
  • Configuration matérielle requise

    • Mémoire disponible minimale : 1 Go
    • Espace disque disponible minimal : 10 Go
  • Prise en charge de la virtualisation

  • Prise en charge du réseau

    • Windows Server n’est pas fourni avec un commutateur par défaut. Pour pouvoir déployer EFLOW sur un appareil Windows Server, vous devez créer un commutateur virtuel. Pour plus d’informations, consultez Création d’un commutateur virtuel pour Linux sur Windows.
    • Les versions Windows Desktop sont fournies avec un commutateur par défaut utilisable pour l’installation d’EFLOW. Si nécessaire, vous pouvez créer votre propre commutateur virtuel personnalisé.

Conseil

Si vous souhaitez utiliser des modules Linux avec accélération GPU dans votre déploiement Azure IoT Edge pour Linux sur Windows, il existe plusieurs options de configuration à prendre en compte.

Vous devrez installer les pilotes adaptés à votre architecture GPU. Par ailleurs, vous aurez peut-être besoin d’un accès à une build du Programme Windows Insider. Pour déterminer vos besoins en matière de configuration et satisfaire à ces prérequis, consultez Accélération GPU pour Azure IoT Edge pour Linux sur Windows.

Veillez à prendre le temps de répondre aux conditions préalables à l’accélération du GPU. Vous devrez redémarrer le processus d’installation si vous décidez d’accélérer le GPU pendant l’installation.

Outils de développeur

Préparez votre appareil cible à l’installation d’Azure IoT Edge pour Linux sur Windows et au déploiement de la machine virtuelle Linux :

  1. Définissez la stratégie d’exécution sur l’appareil cible sur AllSigned. Vous pouvez vérifier la stratégie d’exécution actuelle dans une invite PowerShell avec élévation de privilèges à l’aide de la commande suivante :

    Get-ExecutionPolicy -List
    

    Si la stratégie d’exécution de local machine n’est pas AllSigned, vous pouvez la définir à l’aide de :

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Pour en savoir plus sur le module PowerShell d’Azure IoT Edge pour Linux sur Windows, consultez la documentation de référence sur les fonctions PowerShell.

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

Déployez Azure IoT Edge pour Linux sur Windows sur votre appareil cible.

Remarque

Le processus PowerShell suivant explique comment déployer IoT Edge pour Linux sur Windows sur l’appareil local. Pour effectuer un déploiement sur un appareil cible distant avec PowerShell, vous pouvez utiliser PowerShell distant afin d’établir une connexion à un appareil distant et d’exécuter ces commandes à distance sur cet appareil.

  1. Dans une session PowerShell avec élévation de privilèges, exécutez l’une des commandes suivantes en fonction de l’architecture de votre appareil cible pour télécharger IoT Edge pour Linux sur Windows.

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  2. Installez IoT Edge pour Linux sur Windows sur votre appareil.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    Vous pouvez spécifier des répertoires personnalisés d’installation d’IoT Edge pour Linux sur Windows et VHDX en ajoutant les paramètres INSTALLDIR="<FULLY_QUALIFIED_PATH>" et VHDXDIR="<FULLY_QUALIFIED_PATH>" à la commande d’installation. Par exemple, si vous souhaitez utiliser le dossier D:\EFLOW pour l’installation et D:\EFLOW-VHDX pour le VHDX, vous pouvez utiliser l’applet de commande PowerShell suivante.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. Définissez la stratégie d’exécution sur l’appareil cible sur AllSigned si ce n’est pas déjà fait. Consultez la configuration requise des commandes PowerShell pour vérifier la stratégie d’exécution actuelle et définir la stratégie d’exécution sur AllSigned.

  4. Créer le déploiement d’IoT Edge pour Linux sur Windows. Le déploiement crée votre machine virtuelle Linux et installe le runtime IoT Edge pour vous.

    Deploy-Eflow
    

    Conseil

    Par défaut, la commande Deploy-Eflow crée votre machine virtuelle Linux avec 1 Go de RAM, 1 noyau de processeur virtuel et 16 Go d’espace disque. Toutefois, les ressources dont votre machine virtuelle a besoin dépendent fortement des charges de travail que vous déployez. Si votre machine virtuelle ne dispose pas de suffisamment de mémoire pour prendre en charge vos charges de travail, elle ne démarrera pas.

    Vous pouvez personnaliser les ressources disponibles de la machine virtuelle à l’aide des paramètres facultatifs de la commande Deploy-Eflow. Ceci est nécessaire pour déployer EFLOW sur un appareil avec la configuration matérielle minimale requise.

    Par exemple, la commande suivante crée une machine virtuelle avec 1 cœur de processeur virtuel, 1 Go de RAM (quantité représentée en Mo) et 2 Go d’espace disque :

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    Pour plus d’informations sur tous les paramètres facultatifs disponibles, consultez Fonctions PowerShell pour IoT Edge pour Linux sur Windows.

    Avertissement

    Par défaut, la machine virtuelle Linux EFLOW n’a pas de configuration DNS. Les déploiements utilisant DHCP essaient d’obtenir la configuration DNS propagée par le serveur DHCP. Vérifiez votre configuration DNS pour garantir la connectivité Internet. Pour plus d’informations, consultez AzEFLOW-DNS.

    Vous pouvez affecter un GPU à votre déploiement pour permettre l’utilisation de modules Linux avec accélération GPU. Pour accéder à ces fonctionnalités, vous devez installer les composants requis détaillés dans Accélération GPU pour Azure IoT Edge pour Linux sur Windows.

    Pour utiliser un relais GPU, ajoutez les paramètres gpuName, gpuPassthroughType et gpuCount à votre commande Deploy-Eflow. Pour plus d’informations sur tous les paramètres facultatifs disponibles, consultez Fonctions PowerShell pour IoT Edge pour Linux sur Windows.

    Avertissement

    L’activation du relais d’appareils matériels peut augmenter les risques liés à la sécurité. Microsoft vous recommande de recourir à un pilote d’atténuation des appareils du fournisseur de votre GPU, le cas échéant. Pour plus d’informations, consultez Déploiement d’appareils graphiques avec la technologie DDA (Discrete Device Assignment).

  5. Entrez « Y » pour accepter les termes du contrat de licence.

  6. Entrez « O » ou « R » pour activer ou désactiver les données de diagnostic facultatives à votre convenance.

  7. Une fois le déploiement terminé, la fenêtre PowerShell signale Déploiement réussi.

    Un déploiement réussi indique « Déploiement réussi » à la fin des messages.

    Une fois le déploiement réussi, vous êtes prêt à provisionner votre appareil.

Provisionnement de l’appareil avec son identité cloud

Vous êtes prêt à configurer votre appareil avec ses informations d’identité et d’authentification cloud.

Pour approvisionner votre appareil à l’aide de certificats X.509, vous avez besoin de votre nom de hub IoT, de votre ID d’appareil et des chemins d’accès absolus à votre certificat d’identité et à votre clé privée sur votre ordinateur hôte Windows.

Préparez le certificat d’identité d’appareil et la clé privée correspondante sur votre appareil cible. Prenez connaissance du chemin absolu des deux fichiers.

Exécutez la commande suivante dans une session PowerShell avec élévation de privilèges sur votre appareil cible. Remplacez le texte de l’espace réservé par vos propres valeurs.

Provision-EflowVm -provisioningType ManualX509 -iotHubHostname "HUB_HOSTNAME_HERE" -deviceId "DEVICE_ID_HERE" -identityCertPath "ABSOLUTE_PATH_TO_IDENTITY_CERT_HERE" -identityPrivKeyPath "ABSOLUTE_PATH_TO_PRIVATE_KEY_HERE"

Pour plus d’informations sur la commande Provision-EflowVM, consultez Fonctions PowerShell pour IoT Edge pour Linux sur Windows.

Vérification de la réussite de la configuration

Vérifiez que IoT Edge pour Linux sur Windows a été correctement installé et configuré sur votre appareil IoT Edge.

  1. Connectez-vous à votre IoT Edge pour Linux sur une machine virtuelle Windows en utilisant la commande suivante dans votre session PowerShell :

    Connect-EflowVm
    

    Remarque

    Le seul compte autorisé à accéder via SSH à la machine virtuelle est celui de l’utilisateur qui l’a créée.

  2. Une fois connecté, vous pouvez vérifier la liste des modules IoT Edge en cours d’exécution à l’aide de la commande Linux suivante :

    sudo iotedge list
    
  3. Si vous devez dépanner le service IoT Edge, utilisez les commandes Linux suivantes.

    1. Récupérez les journaux de service.

      sudo iotedge system logs
      
    2. Utilisez l’outil check pour vérifier l’état de la configuration et de la connexion de l’appareil.

      sudo iotedge check
      

    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.

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.

Désinstaller IoT Edge pour Linux sur Windows

Si vous souhaitez supprimer l’installation d’Azure IoT Edge pour Linux sur Windows de votre appareil, utilisez les commandes suivantes.

  1. Ouvrez Paramètres sur Windows.
  2. Sélectionnez Ajout/Suppression de programmes.
  3. Sélectionnez l’application Azure IoT Edge.
  4. Sélectionnez Désinstaller.

Étapes suivantes