Démarrage rapide : Provisionner un appareil simulé avec certificat X.509

Dans ce démarrage rapide, vous créez un appareil simulé sur votre machine Windows. L’appareil simulé est configuré pour utiliser le mécanisme d’attestation de certificat X.509 pour l’authentification. Une fois votre appareil configuré, vous le configurez dans votre hub IoT en utilisant le service Azure IoT Hub Device Provisioning.

Si vous ne connaissez pas le processus de provisionnement, passez en revue la vue d’ensemble du provisionnement. Vérifiez également que vous avez suivi la procédure décrite dans Configurer le service d’approvisionnement d’appareil IoT Hub avec le portail Azure avant de continuer.

Ce guide de démarrage rapide présente une solution pour une station de travail Windows. Vous pouvez toutefois également effectuer les procédures sur Linux. Pour obtenir un exemple sur Linux, consultez Tutoriel : Provisionner pour la géolatence.

Prérequis

Les prérequis suivants s’appliquent à un environnement de développement Windows. Pour Linux ou macOS, consultez la section appropriée de Préparer votre environnement de développement dans la documentation du kit de développement logiciel (SDK).

  • Installez Visual Studio 2022 avec la charge de travail « Développement Desktop en C++ » activée. Visual Studio 2015, Visual Studio 2017 et Visual Studio 19 sont également pris en charge. Pour Linux ou macOS, consultez la section appropriée de Préparer votre environnement de développement dans la documentation du kit de développement logiciel (SDK).

  • Installez le dernier système de génération CMake. Veillez à cocher l’option qui ajoute l’exécutable CMake à votre chemin d’accès.

    Important

    Vérifiez que les prérequis de Visual Studio (Visual Studio et la charge de travail « Développement Desktop en C++ ») sont installés sur votre machine avant de commencer l’installation de CMake. Une fois les composants requis en place et le téléchargement effectué, installez le système de génération de CMake. Sachez également que les versions antérieures du système de génération CMake ne permettent pas de générer le fichier solution utilisé dans cet article. Veillez à utiliser la dernière version de CMake.

Les prérequis suivants s’appliquent à un environnement de développement Windows. Pour Linux ou macOS, consultez la section appropriée de Préparer votre environnement de développement dans la documentation du kit de développement logiciel (SDK).

  • Installez le kit SDK .NET 6.0 sur votre machine Windows. Vous pouvez exécuter la commande suivante pour vérifier votre version.

    dotnet --info
    

Les prérequis suivants s’appliquent à un environnement de développement Windows. Pour Linux ou macOS, consultez la section appropriée de Préparer votre environnement de développement dans la documentation du kit de développement logiciel (SDK).

Les prérequis suivants s’appliquent à un environnement de développement Windows.

Les prérequis suivants s’appliquent à un environnement de développement Windows. Pour Linux ou macOS, consultez la section appropriée de Préparer votre environnement de développement dans la documentation du kit de développement logiciel (SDK).

  • Installez la dernière version de Git. Vérifiez que Git est ajouté aux variables d’environnement accessibles à la fenêtre de commande. Consultez Outils clients Git de Software Freedom Conservancy pour accéder à la dernière version des outils git à installer, ce qui inclut Git Bash, l’application en ligne de commande que vous pouvez utiliser pour interagir avec votre dépôt Git local.

  • Assurez-vous qu’OpenSSL est installé sur votre ordinateur. Sur Windows, votre installation de Git inclut une installation d’OpenSSL. Vous pouvez accéder à OpenSSL à partir de l’invite Git Bash. Pour vérifier qu’OpenSSL est installé, ouvrez une invite Git Bash et entrez openssl version.

    Notes

    À moins que vous ne connaissiez OpenSSL et que vous l’ayez déjà installé sur votre ordinateur Windows, nous vous recommandons d’utiliser OpenSSL à partir de l’invite Git Bash. Vous pouvez également choisir de télécharger le code source et de générer OpenSSL. Pour en savoir plus, consultez la page Téléchargements OpenSSL. Vous pouvez également télécharger OpenSSL prédéfini auprès d’un tiers. Pour en savoir plus, consultez le wiki OpenSSL. Microsoft ne garantit pas la validité des packages téléchargés auprès de tiers. Si vous choisissez de générer ou de télécharger OpenSSL, vérifiez que le binaire OpenSSL est accessible dans votre chemin d’accès et que la variable d’environnement OPENSSL_CNF est définie sur le chemin d’accès de votre fichier openssl.cnf.

  • Ouvrez une invite de commandes Windows et une invite Git Bash.

    Les étapes décrites dans ce démarrage rapide supposent que vous utilisez un ordinateur Windows et l’installation OpenSSL qui est installée dans le cadre de Git. Vous utilisez l’invite Git Bash pour émettre des commandes OpenSSL et l’invite de commandes Windows pour tout le reste. Si vous utilisez Linux, vous pouvez émettre toutes les commandes à partir d’un interpréteur de commandes Bash.

Préparer votre environnement de développement

Dans cette section, vous allez préparer un environnement de développement qui est utilisé pour générer le SDK C Azure IoT . L’exemple de code tente de provisionner l’appareil pendant la séquence de démarrage de ce dernier.

  1. Ouvrez un navigateur web, puis accédez à la page des versions du kit SDK C Azure IoT.

  2. Sélectionnez l’onglet Étiquettes en haut de la page.

  3. Copiez le nom d’étiquette de la version la plus récente du SDK C Azure IoT.

  4. Dans votre invite de commandes Windows, exécutez les commandes suivantes pour cloner la dernière version du dépôt GitHub de l’appareil Azure IoT SDK pour C. Remplacez <release-tag> par la balise que vous avez copiée à l’étape précédente, par exemple : lts_01_2023.

    git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git
    cd azure-iot-sdk-c
    git submodule update --init
    

    Cette opération peut prendre plusieurs minutes.

  5. Une fois l’opération terminée, exécutez les commandes suivantes à partir du répertoire azure-iot-sdk-c :

    mkdir cmake
    cd cmake
    
  6. L’exemple de code utilise un certificat X.509 pour fournir l’attestation via l’authentification X.509. Exécutez la commande suivante pour générer une version du SDK propre à votre plateforme de développement qui inclut le client de provisionnement des appareils. Une solution Visual Studio pour l’appareil simulé est générée dans le répertoire cmake.

    Lorsque vous spécifiez le chemin d’accès utilisé -Dhsm_custom_lib dans la commande suivante, veillez à utiliser le chemin d’accès absolu dans le répertoire cmake que vous avez créé précédemment. Le chemin d’accès indiqué suppose que vous avez cloné le Kit de développement logiciel (SDK) C dans le répertoire racine du lecteur C. Si vous avez utilisé un autre répertoire, ajustez le chemin d’accès en conséquence.

    cmake -Duse_prov_client:BOOL=ON -Dhsm_custom_lib=c:/azure-iot-sdk-c/cmake/provisioning_client/samples/custom_hsm_example/Debug/custom_hsm_example.lib ..
    

Conseil

Si cmake ne trouve pas votre compilateur C++, vous risquez de rencontrer des erreurs de génération lors de l’exécution de la commande ci-dessus. Si cela se produit, essayez d’exécuter la commande dans l’invite de commandes de Visual Studio.

  1. Quand la génération aboutit, les dernières lignes de la sortie ressemblent à la sortie suivante :

    -- Building for: Visual Studio 17 2022
    -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.22000.
    -- The C compiler identification is MSVC 19.32.31329.0
    -- The CXX compiler identification is MSVC 19.32.31329.0
    
    ...
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/azure-iot-sdk-c/cmake
    

Dans votre invite de commandes Windows, clonez le dépôt GitHub Azure IoT SDK pour C# avec la commande suivante :

git clone https://github.com/Azure/azure-iot-sdk-csharp.git

Dans votre invite de commandes Windows, clonez le dépôt GitHub Azure IoT SDK pour Node.js à l’aide de la commande suivante :

git clone https://github.com/Azure/azure-iot-sdk-node.git

Dans votre invite de commandes Windows, clonez le dépôt GitHub d’appareil SDK Azure IoT pour Python à l’aide de la commande suivante :

git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive

Notes

Les exemples utilisés dans ce tutoriel se trouvent dans la branche v2 du référentiel azure-iot-sdk-python. V3 du Kit de développement logiciel (SDK) Python est disponible en version bêta.

  1. Dans votre invite de commandes Windows, clonez le dépôt GitHub d’exemples Azure IoT pour Java à l’aide de la commande suivante :

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  2. Accédez au répertoire azure-iot-sdk-java racine et générez le projet pour télécharger tous les packages nécessaires.

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    

Créer un certificat auto-signé d’appareil X.509

Dans cette section, vous utilisez OpenSSL pour créer un certificat X.509 auto-signé et une clé privée. Ce certificat est chargé vers votre instance de service d’approvisionnement, puis vérifié par le service.

Attention

Utilisez des certificats créés avec OpenSSL dans ce démarrage rapide pour les tests de développement uniquement. N’utilisez pas ces certificats en production. Ces certificats expirent au bout de 30 jours et peuvent contenir des mots de passe codés en dur, tels que 1234. Pour en savoir plus sur l’obtention de certificats appropriés pour une utilisation en production, consultez Guide pratique pour obtenir un certificat d’autorité de certification X.509 dans la documentation Azure IoT Hub.

Effectuez les étapes décrites dans cette section dans votre invite Git Bash.

  1. Dans votre invite Git Bash, accédez à un répertoire dans lequel vous souhaitez créer vos certificats.

  2. Exécutez la commande suivante :

    winpty openssl req -outform PEM -x509 -sha256 -newkey rsa:4096 -keyout device-key.pem -out device-cert.pem -days 30 -extensions usr_cert -addext extendedKeyUsage=clientAuth -subj "//CN=my-x509-device"
    

    Important

    La barre oblique supplémentaire spécifiée dans le nom d’objet (//CN=my-x509-device) est nécessaire uniquement pour l’échappement de la chaîne avec Git sur les plateformes Windows.

  3. Quand vous êtes invité à entrer la phrase secrète PEM, utilisez la phrase secrète 1234.

  4. Quand vous êtes invité à vérifier la phrase secrète PEM, réutilisez la phrase secrète 1234.

    Un fichier de certificat de clé publique (device-cert.pem) et un fichier de clé privée (device.key.pem) doivent maintenant être générés dans le répertoire où vous avez exécuté la commande openssl.

    Le nom commun (CN) sujet du fichier de certificat est défini sur my-x509-device. Pour les inscriptions basées sur X.509, l’ID d’inscription est défini sur le nom commun. L’ID d’inscription est une chaîne insensible à la casse de caractères alphanumériques et des caractères spéciaux : '-', '.', '_', ':'. Le dernier caractère doit être alphanumérique ou être un tiret ('-'). Le nom commun doit respecter ce format. DPS prend en charge les ID d’inscription jusqu’à 128 caractères ; toutefois, la longueur maximale du nom commun de l’objet dans un certificat X.509 est de 64 caractères. L’ID d’inscription est donc limité à 64 caractères lors de l’utilisation de certificats X.509.

  5. Le fichier de certificat est encodé en Base 64. Pour afficher le nom commun (CN) de l’objet et d’autres propriétés du fichier de certificat, entrez la commande suivante :

    winpty openssl x509 -in device-cert.pem -text -noout
    
    Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            77:3e:1d:e4:7e:c8:40:14:08:c6:09:75:50:9c:1a:35:6e:19:52:e2
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = my-x509-device
        Validity
            Not Before: May  5 21:41:42 2022 GMT
            Not After : Jun  4 21:41:42 2022 GMT
        Subject: CN = my-x509-device
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (4096 bit)
                Modulus:
                    00:d2:94:37:d6:1b:f7:43:b4:21:c6:08:1a:d6:d7:
                    e6:40:44:4e:4d:24:41:6c:3e:8c:b2:2c:b0:23:29:
                    ...
                    23:6e:58:76:45:18:03:dc:2e:9d:3f:ac:a3:5c:1f:
                    9f:66:b0:05:d5:1c:fe:69:de:a9:09:13:28:c6:85:
                    0e:cd:53
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                63:C0:B5:93:BF:29:F8:57:F8:F9:26:44:70:6F:9B:A4:C7:E3:75:18
            X509v3 Authority Key Identifier:
                keyid:63:C0:B5:93:BF:29:F8:57:F8:F9:26:44:70:6F:9B:A4:C7:E3:75:18
    
            X509v3 Extended Key Usage:
                TLS Web Client Authentication
    Signature Algorithm: sha256WithRSAEncryption
         82:8a:98:f8:47:00:85:be:21:15:64:b9:22:b0:13:cc:9e:9a:
         ed:f5:93:b9:4b:57:0f:79:85:9d:89:47:69:95:65:5e:b3:b1:
         ...
         cc:b2:20:9a:b7:f2:5e:6b:81:a1:04:93:e9:2b:92:62:e0:1c:
         ac:d2:49:b9:36:d2:b0:21
    
  1. L’exemple de code nécessite une clé privée qui n’est pas chiffrée. Exécutez la commande suivante pour créer une clé privée non chiffrée :

    winpty openssl rsa -in device-key.pem -out unencrypted-device-key.pem
    
  2. Lorsque vous êtes invité à entrer une phrase secrète pour device-key.pem :, utilisez la même phrase secrète que celle utilisée précédemment, 1234.

Maintenez l’invite Git Bash ouverte. Vous en aurez besoin ultérieurement dans ce démarrage rapide.

L’exemple de code C# est configuré pour utiliser des certificats X.509 qui sont stockés dans un fichier PKCS#12 protégé par mot de passe (certificate.pfx). Vous avez toujours besoin du fichier PEM de certificat de clé publique (device-cert.pem) mis en forme nouvellement créé pour créer une entrée d’inscription individuelle plus loin dans ce démarrage rapide.

  1. Pour générer le fichier PKCS12 attendu dans l’exemple, entrez la commande suivante :

    winpty openssl pkcs12 -inkey device-key.pem -in device-cert.pem -export -out certificate.pfx
    
  2. Lorsque vous êtes invité à entrer une phrase secrète pour device-key.pem :, utilisez la même phrase secrète que celle utilisée précédemment, 1234.

  3. Lorsque vous êtes invité à entrer le mot de passe d’exportation :, utilisez le mot de passe 1234.

  4. Lorsque vous êtes invité vérifier - entrer le mot de passe d’exportation :, utilisez à nouveau le mot de passe 1234.

    Un fichier PKCS12 de certificat (certificate.pfx) doit maintenant être généré dans le répertoire où vous avez exécuté la commande openssl.

  5. Copiez le fichier PKCS12 de certificat dans le répertoire du projet pour l’exemple d’approvisionnement des appareils X.509. Le chemin d’accès donné est relatif à l’emplacement où vous avez téléchargé l’exemple de dépôt.

    cp certificate.pfx ./azure-iot-sdk-csharp/provisioning/device/samples/"Getting Started"/X509Sample
    

Vous n’avez pas besoin de l’invite Git Bash pour le reste de ce démarrage rapide. Toutefois, vous souhaiterez peut-être l’ouvrir pour vérifier votre certificat si vous rencontrez des problèmes dans les étapes ultérieures.

  1. L’exemple de code nécessite une clé privée qui n’est pas chiffrée. Exécutez la commande suivante pour créer une clé privée non chiffrée :

    winpty openssl rsa -in device-key.pem -out unencrypted-device-key.pem
    
  2. Lorsque vous êtes invité à entrer une phrase secrète pour device-key.pem :, utilisez la même phrase secrète que celle utilisée précédemment, 1234.

  3. Copiez le certificat d’appareil et la clé privée non chiffrée dans le répertoire du projet pour l’exemple d’approvisionnement des appareils X.509. Le chemin d’accès donné est relatif à l’emplacement où vous avez téléchargé le Kit de développement logiciel (SDK).

    cp device-cert.pem ./azure-iot-sdk-node/provisioning/device/samples
    cp unencrypted-device-key.pem ./azure-iot-sdk-node/provisioning/device/samples
    

Vous n’avez pas besoin de l’invite Git Bash pour le reste de ce démarrage rapide. Toutefois, vous souhaiterez peut-être l’ouvrir pour vérifier votre certificat si vous rencontrez des problèmes dans les étapes ultérieures.

  1. Copiez le certificat d’appareil et la clé privée dans le répertoire du projet pour l’exemple d’approvisionnement des appareils X.509. Le chemin d’accès donné est relatif à l’emplacement où vous avez téléchargé le Kit de développement logiciel (SDK).

    cp device-cert.pem ./azure-iot-sdk-python/samples/async-hub-scenarios
    cp device-key.pem ./azure-iot-sdk-python/samples/async-hub-scenarios
    

Vous n’avez pas besoin de l’invite Git Bash pour le reste de ce démarrage rapide. Toutefois, vous souhaiterez peut-être l’ouvrir pour vérifier votre certificat si vous rencontrez des problèmes dans les étapes ultérieures.

  1. L’exemple de code Java nécessite une clé privée qui n’est pas chiffrée. Exécutez la commande suivante pour créer une clé privée non chiffrée :

    winpty openssl pkey -in device-key.pem -out unencrypted-device-key.pem
    
  2. Lorsque vous êtes invité à entrer une phrase secrète pour device-key.pem :, utilisez la même phrase secrète que celle utilisée précédemment, 1234.

Maintenez l’invite Git Bash ouverte. Vous en aurez besoin ultérieurement dans ce démarrage rapide.

Créer une inscription d’appareil

Le service Azure IoT Device Provisioning prend en charge deux types d’inscriptions :

Cet article décrit l’inscription individuelle d’un appareil à provisionner auprès d’un hub IoT.

  1. Connectez-vous au portail Azure et accédez à votre instance du service Device Provisioning.

  2. Sélectionnez Gérer les inscriptions dans la section Paramètres du menu de navigation.

  3. Sélectionnez l’onglet Inscriptions individuelles, puis Ajouter une inscription individuelle.

    Screenshot that shows the add individual enrollment option.

  4. Dans la section Inscription + approvisionnement de la page Ajouter une inscription, fournissez les informations suivantes pour configurer les détails de l’inscription :

    Champ Description
    Attestation Sélectionnez Certificats clients X.509 comme mécanisme d’attestation.
    Paramètres de certificat X.509 Chargez un ou deux certificats qui seront utilisés pour vérifier l’appareil pour cette inscription.
    État d’approvisionnement Cochez la case Activer cette inscription si vous souhaitez que cette inscription soit disponible pour approvisionner son appareil. Désélectionnez cette case si vous souhaitez désactiver l’inscription. Vous pouvez modifier ce paramètre ultérieurement.
    Stratégie de réapprovisionnement Choisissez une stratégie de réapprovisionnement qui reflète la façon dont vous souhaitez que DPS gère les appareils qui demandent le réapprovisionnement. Pour plus d’informations, consultez Réplica de réapprovisionnement.
  5. Sélectionnez Suivant : hubs IoT.

  6. Sous l’onglet IoT Hubs de la page Ajouter une inscription, fournissez les informations suivantes pour déterminer les hubs IoT pour lesquels l’inscription peut approvisionner des appareils :

    Champ Description
    Hubs IoT cibles Sélectionnez un ou plusieurs de vos hubs IoT liés, ou ajoutez un nouveau lien à un hub IoT. Pour en savoir plus sur la liaison de hubs IoT à votre instance DPS, consultez Comment lier et gérer des hubs IoT.
    Stratégie d’allocation Si vous avez sélectionné plusieurs hubs IoT liés, sélectionnez la façon dont vous souhaitez affecter des appareils aux différents hubs. Pour en savoir plus sur les stratégies d’allocation, consultez le guide pratique pour utiliser des stratégies d’allocation.

    Si vous avez sélectionné un seul hub IoT lié, nous vous recommandons d’utiliser la stratégie de distribution uniformément pondérée.
  7. Sélectionnez Suivant : paramètres de l’appareil

  8. Sous l’onglet Paramètres de l’appareil de la page Ajouter une inscription, fournissez les informations suivantes pour définir la façon dont les appareils nouvellement approvisionnés seront configurés :

    Champ Description
    ID de périphérique Fournissez un ID d’appareil qui sera attribué à l’appareil approvisionné dans IoT Hub. Si vous ne fournissez pas un ID d’appareil, l’ID d’inscription est utilisé.
    IoT Edge Cochez Activer IoT Edge sur les appareils approvisionnés si l’appareil approvisionné exécute Azure IoT Edge. Désélectionnez cette case si cette inscription concerne un appareil sans IoT Edge activé.
    Balises d’appareil Utilisez cette zone de texte pour fournir les balises que vous souhaitez appliquer au jumeau d’appareil de l’appareil approvisionné.
    Propriétés souhaitées Utilisez cette zone de texte pour fournir les propriétés souhaitées que vous souhaitez appliquer au jumeau d’appareil de l’appareil approvisionné.

    Pour en savoir plus, consultez Comprendre et utiliser les jumeaux d’appareil IoT Hub.

  9. Sélectionnez Suivant : Vérifier + créer.

  10. Dans l’onglet Vérifier + créer, vérifiez toutes vos valeurs, puis sélectionnez Créer.

Préparer et exécuter le code de provisionnement d’un appareil

Dans cette section, vous mettez à jour l’exemple de code pour envoyer la séquence de démarrage de l’appareil à votre instance de service d’approvisionnement des appareils. Grâce à cette séquence de démarrage, l’appareil est reconnu et attribué à un hub IoT lié à l’instance DPS.

Dans cette section, vous utilisez votre invite Git Bash et l’IDE Visual Studio.

Configurer le code de l’appareil de provisionnement

Dans cette section, vous mettez à jour l’exemple de code avec les informations de votre instance du service Device Provisioning.

  1. Dans le portail Azure, sélectionnez l’onglet Vue d’ensemble de votre service Device Provisioning.

  2. Copiez la valeur Étendue de l’ID.

    Screenshot of the ID scope on Azure portal.

  3. Lancez Visual Studio et ouvrez le nouveau fichier de solution créé dans le répertoire cmake que vous avez créé à la racine du dépôt git azure-iot-sdk-c. Le fichier de la solution est nommé azure_iot_sdks.sln.

  4. Dans l’Explorateur de solutions pour Visual Studio, accédez à Provision_Samples > prov_dev_client_sample > Source Files et ouvrez prov_dev_client_sample.c.

  5. Recherchez la constante id_scope et remplacez la valeur par la valeur Étendue de l’ID que vous avez copiée à l’étape 2.

    static const char* id_scope = "0ne00000A0A";
    
  6. Recherchez la définition de la fonction main() dans le même fichier. Vérifiez que la hsm_typevariable a la valeur SECURE_DEVICE_TYPE_X509.

    SECURE_DEVICE_TYPE hsm_type;
    //hsm_type = SECURE_DEVICE_TYPE_TPM;
    hsm_type = SECURE_DEVICE_TYPE_X509;
    //hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
    
  7. Enregistrez vos modifications.

  8. Cliquez avec le bouton droit sur le projet dps_client_sample et sélectionnez Définir comme projet de démarrage.

Configurer le code de stub HSM personnalisé

Les détails de l’interaction avec le stockage matériel sécurisé réel varient en fonction du matériel. Par conséquent, le certificat et la clé privée utilisés par l’appareil simulé dans ce démarrage rapide sont codés en dur dans le code de stub du module HSM personnalisé.

Pour mettre à jour le code de stub HSM personnalisé afin de simuler l’identité de l’appareil avec l’ID my-x509-device :

  1. Dans l’Explorateur de solutions pour Visual Studio, accédez à Provision_Samples > custom_hsm_example > Source Files et ouvrez custom_hsm_example.c.

  2. Mettez à jour la valeur de chaîne de la constante de chaîne COMMON_NAME à l’aide du nom commun que vous avez utilisé lors de la génération du certificat d’appareil, my-x509-device.

    static const char* const COMMON_NAME = "my-x509-device";
    
  3. Mettez à jour la valeur de chaîne de la chaîne constante CERTIFICATE à l’aide du certificat d’appareil, device-cert.pem, que vous avez généré précédemment.

    La syntaxe du texte du certificat de l’exemple doit suivre le modèle suivant, sans espace supplémentaire ni analyse effectuée par Visual Studio.

    static const char* const CERTIFICATE = "-----BEGIN CERTIFICATE-----\n"
    "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n"
        ...
    "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n"
    "-----END CERTIFICATE-----";        
    

    La mise à jour manuelle de cette valeur de chaîne peut être sujette à des erreurs. Pour générer la syntaxe appropriée, vous pouvez copier et coller la commande suivante dans votre invite Git Bash, puis appuyez sur Entrée. Cette commande génère la syntaxe de la valeur de constante de chaîne CERTIFICATE et l’écrit dans la sortie.

    sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' device-cert.pem
    

    Copiez et collez le texte du certificat de sortie pour la valeur de constante.

  4. Mettez à jour la valeur de chaîne de la constante PRIVATE_KEY avec la clé privée non chiffrée pour votre certificat d’appareil, unencrypted-device-key.pem.

    La syntaxe du texte de la clé privée doit suivre le modèle suivant, sans espace supplémentaire ni analyse effectuée par Visual Studio.

    static const char* const PRIVATE_KEY = "-----BEGIN RSA PRIVATE KEY-----\n"
    "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n"
        ...
    "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n"
    "-----END RSA PRIVATE KEY-----";
    

    La mise à jour manuelle de cette valeur de chaîne peut être sujette à des erreurs. Pour générer la syntaxe appropriée, vous pouvez copier et coller la commande suivante dans votre invite Git Bash, puis appuyez sur Entrée. Cette commande génère la syntaxe de la valeur de constante de chaîne PRIVATE_KEY et l’écrit dans la sortie.

    sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' unencrypted-device-key.pem
    

    Copiez et collez le texte de la clé privée de sortie pour la valeur de constante.

  5. Enregistrez vos modifications.

  6. Cliquez avec le bouton droit sur le projet custom_hsm_-_example, puis sélectionnez Générer.

    Important

    Vous devez générer le projet custom_hsm_example avant de générer le reste de la solution dans la section suivante.

Exécution de l'exemple

  1. Dans le menu Visual Studio, sélectionnez Déboguer>Exécuter sans débogage pour exécuter la solution. Si vous êtes invité à régénérer le projet, sélectionnez Oui pour le faire avant de l’exécuter.

    La sortie suivante illustre un exemple de l’appareil simulé my-x509-device démarrant correctement et se connectant au service d’approvisionnement. L’appareil est attribué à un hub IoT et inscrit :

    Provisioning API Version: 1.8.0
    
    Registering Device
    
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    
    Registration Information received from service: contoso-iot-hub-2.azure-devices.net, deviceId: my-x509-device
    Press enter key to exit:
    

Dans cette section, vous utilisez votre invite de commandes Windows.

  1. Dans le portail Azure, sélectionnez l’onglet Vue d’ensemble de votre service Device Provisioning.

  2. Copiez la valeur Étendue de l’ID.

    Screenshot of the ID scope on Azure portal.

  3. Dans votre invite de commandes Windows, accédez au répertoire X509Sample. Ce répertoire se trouve dans le répertoire .\azure-iot-sdk-csharp\provisioning\device\samples\getting started\X509Sample dans le répertoire où vous avez cloné les exemples sur votre ordinateur.

  4. Entrez la commande suivante pour générer et exécuter l’exemple d’approvisionnement des appareils X.509 (en remplaçant la valeur <IDScope> par l’étendue de l’ID que vous avez copiée dans la section précédente). Le fichier de certificat est ./certificate.pfx par défaut et vous invite à entrer le mot de passe .pfx.

    dotnet run -- -s <IDScope>
    

    Si vous souhaitez passer le certificat et le mot de passe en paramètre, vous pouvez utiliser l’exemple suivant.

    Notes

    Vous pouvez passer des paramètres supplémentaires pendant l’exécution de l’application pour changer le TransportType (-t) et le GlobalDeviceEndpoint (-g).

    dotnet run -- -s 0ne00000A0A -c certificate.pfx -p 1234
    
  5. L’appareil se connecte à DPS et est affecté à un hub IoT. Ensuite, l’appareil envoie un message de télémétrie au hub IoT.

    Loading the certificate...
    Enter the PFX password for certificate.pfx:
    ****
    Found certificate: A33DB11B8883DEE5B1690ACFEAAB69E8E928080B CN=my-x509-device; PrivateKey: True
    Using certificate A33DB11B8883DEE5B1690ACFEAAB69E8E928080B CN=my-x509-device
    Initializing the device provisioning client...
    Initialized for registration Id my-x509-device.
    Registering with the device provisioning service...
    Registration status: Assigned.
    Device my-x509-device registered to MyExampleHub.azure-devices.net.
    Creating X509 authentication for IoT Hub...
    Testing the provisioned device with IoT Hub...
    Sending a telemetry message...
    Finished.
    

Dans cette section, vous utilisez votre invite de commandes Windows.

  1. Dans le portail Azure, sélectionnez l’onglet Vue d’ensemble de votre service Device Provisioning.

  2. Copiez la valeur Étendue de l’ID.

    Screenshot of the ID scope on Azure portal.

  3. Dans votre invite de commandes Windows, accédez à l’exemple de répertoire et installez les packages nécessaires à l’exemple. Le chemin d’accès affiché est relatif à l’emplacement où vous avez cloné le Kit de développement logiciel (SDK).

    cd .\azure-iot-sdk-node\provisioning\device\samples
    npm install
    

    L’exemple utilise cinq variables d’environnement pour authentifier et provisionner un appareil IoT à l’aide du service DPS. Ces variables d’environnement sont :

    Nom de la variable Description
    PROVISIONING_HOST Point de terminaison à utiliser pour la connexion à votre instance DPS. Pour ce démarrage rapide, utilisez le point de terminaison global, global.azure-devices-provisioning.net.
    PROVISIONING_IDSCOPE Étendue de l’ID pour votre instance DPS.
    PROVISIONING_REGISTRATION_ID L’ID d’inscription pour votre appareil. Il doit correspondre au nom commun de l’objet dans le certificat d’appareil.
    CERTIFICATE_FILE Chemin d’accès à votre fichier de certificat d’appareil.
    KEY_FILE Le chemin d’accès à votre fichier de clé privée d’appareil.
  4. Ajoutez les variables d’environnement pour le point de terminaison d’appareil global et l’ID de l’étendue. Remplacez <id-scope> par la valeur que vous avez copiée à l’étape 2.

    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    set PROVISIONING_IDSCOPE=<id-scope>
    
  5. Définissez la variable d’environnement pour l’ID d’inscription d’appareil. L’ID d’inscription de l’appareil IoT doit correspondre au nom d’objet commun sur son certificat d’appareil. Si vous avez suivi les étapes de ce démarrage rapide et généré un certificat de test autosigné, my-x509-device correspond à la fois au nom d’objet et à l’ID d’inscription de l’appareil.

    set PROVISIONING_REGISTRATION_ID=my-x509-device
    
  6. Définissez les variables d’environnement pour le certificat d’appareil et les fichiers de clé privée de l’appareil (non chiffrés).

    set CERTIFICATE_FILE=.\device-cert.pem
    set KEY_FILE=.\unencrypted-device-key.pem
    
  7. Exécutez l’exemple et vérifiez que l’appareil a été approvisionné correctement.

    node register_x509.js
    

    Vous devez obtenir une sortie similaire à la suivante :

    registration succeeded
    assigned hub=contoso-hub-2.azure-devices.net
    deviceId=my-x509-device
    Client connected
    send status: MessageEnqueued
    

Dans cette section, vous utilisez votre invite de commandes Windows.

  1. Dans le portail Azure, sélectionnez l’onglet Vue d’ensemble de votre service Device Provisioning.

  2. Copiez les valeurs Étendue de l’ID et Point de terminaison d’appareil global.

    Screenshot of the ID scope and global device endpoint on Azure portal.

  3. Dans votre invite de commandes Windows, accédez au répertoire de l’exemple provision_x509.py. Le chemin d’accès affiché est relatif à l’emplacement où vous avez cloné le Kit de développement logiciel (SDK).

    cd ./azure-iot-sdk-python/samples/async-hub-scenarios
    

    Cet exemple utilise six variables d’environnement pour authentifier et provisionner un appareil IoT à l’aide du service DPS. Ces variables d’environnement sont :

    Nom de la variable Description
    PROVISIONING_HOST Le point de terminaison global utilisé pour la connexion à votre instance DPS
    PROVISIONING_IDSCOPE Étendue de l’ID pour votre instance DPS.
    DPS_X509_REGISTRATION_ID L’ID d’inscription pour votre appareil. Elle doit également correspondre au nom d’objet sur le certificat de l’appareil.
    X509_CERT_FILE Chemin d’accès à votre fichier de certificat d’appareil.
    X509_KEY_FILE Chemin d’accès au fichier de clé privée de votre certificat d’appareil.
    PASS_PHRASE Phrase secrète utilisée pour chiffrer le certificat et le fichier de clé privée (1234).
  4. Ajoutez les variables d’environnement pour le point de terminaison d’appareil global et l’ID de l’étendue.

    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    set PROVISIONING_IDSCOPE=<ID scope for your DPS resource>
    
  5. Définissez la variable d’environnement de l’ID d’inscription. L’ID d’inscription de l’appareil IoT doit correspondre au nom d’objet sur son certificat d’appareil. Si vous avez suivi les étapes de ce démarrage rapide et généré un certificat de test autosigné, my-x509-device correspond à la fois au nom d’objet et à l’ID d’inscription de l’appareil.

    set DPS_X509_REGISTRATION_ID=my-x509-device
    
  6. Définissez les variables d’environnement du fichier de certificat, du fichier de clé privée et de la phrase secrète.

    set X509_CERT_FILE=./device-cert.pem
    set X509_KEY_FILE=./device-key.pem
    set PASS_PHRASE=1234
    
  7. Passez en revue le code pour provision_x509.py. Si vous n’utilisez pas Python version 3.7 ou une version ultérieure, changez le code indiqué ici pour remplacer asyncio.run(main()), et enregistrez vos modifications.

  8. Exécutez l’exemple. L’exemple se connecte à DPS, qui provisionne l’appareil sur un hub IoT. Une fois l’appareil provisionné, l’exemple envoie des messages de test au hub IoT.

    $ python azure-iot-sdk-python/samples/async-hub-scenarios/provision_x509.py
    RegistrationStage(RequestAndResponseOperation): Op will transition into polling after interval 2.  Setting timer.
    The complete registration result is
    my-x509-device
    TestHub12345.azure-devices.net
    initialAssignment
    null
    Will send telemetry from the provisioned device
    sending message #4
    sending message #7
    sending message #2
    sending message #8
    sending message #5
    sending message #9
    sending message #1
    sending message #6
    sending message #10
    sending message #3
    done sending message #4
    done sending message #7
    done sending message #2
    done sending message #8
    done sending message #5
    done sending message #9
    done sending message #1
    done sending message #6
    done sending message #10
    done sending message #3
    

Dans cette section, vous utilisez votre invite de commandes Windows et votre invite Git Bash.

  1. Dans le portail Azure, sélectionnez l’onglet Vue d’ensemble de votre service Device Provisioning.

  2. Copiez les valeurs Étendue de l’ID et Point de terminaison d’appareil global.

    Screenshot of the ID scope and global device endpoint on Azure portal.

  3. Dans l’invite de commandes Windows, accédez au dossier de l’exemple de projet. Le chemin d’accès affiché est relatif à l’emplacement où vous avez cloné le Kit de développement logiciel (SDK).

    cd .\azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-X509-sample
    
  4. Entrez les informations relatives à l’identité X.509 et au service d’approvisionnement dans l’exemple de code. L’information est utilisée lors du provisionnement, pour l’attestation de l’appareil simulé, avant l’inscription de l’appareil.

    1. Ouvrez le fichier .\src\main\java\samples\com\microsoft\azure\sdk\iot\ProvisioningX509Sample.java dans l’éditeur de votre choix.

    2. Mettez à jour les valeurs suivantes avec l’ID de l’étendue et le point de terminaison global du service d’approvisionnement que vous avez copiés précédemment.

      private static final String idScope = "[Your ID scope here]";
      private static final String globalEndpoint = "[Your Provisioning Service Global Endpoint here]";
      private static final ProvisioningDeviceClientTransportProtocol PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL = ProvisioningDeviceClientTransportProtocol.HTTPS;
      
      
    3. Mettez à jour la valeur de la chaîne constante leafPublicPem avec la valeur de votre certificat, device-cert.pem.

      La syntaxe du texte du certificat doit suivre le modèle suivant, sans espace ni caractère supplémentaire.

      private static final String leafPublicPem = "-----BEGIN CERTIFICATE-----\n" +
      "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" +
          ...
      "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" +
      "-----END CERTIFICATE-----";        
      

      La mise à jour manuelle de cette valeur de chaîne peut être sujette à des erreurs. Pour générer la syntaxe appropriée, vous pouvez copier et coller la commande suivante dans votre invite Git Bash, puis appuyez sur Entrée. Cette commande génère la syntaxe de la valeur de constante de chaîne leafPublicPem et l’écrit dans la sortie.

      sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' device-cert.pem
      

      Copiez et collez le texte du certificat de sortie pour la valeur de constante.

    4. Mettez à jour la valeur de chaîne de la constante leafPrivateKey avec la clé privée non chiffrée pour votre certificat d’appareil, unencrypted-device-key.pem.

      La syntaxe du texte de la clé privée doit suivre le modèle suivant, sans espace ni caractère supplémentaire.

      private static final String leafPrivateKey = "-----BEGIN PRIVATE KEY-----\n" +
      "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n" +
          ...
      "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n" +
      "-----END PRIVATE KEY-----";
      

      La mise à jour manuelle de cette valeur de chaîne peut être sujette à des erreurs. Pour générer la syntaxe appropriée, vous pouvez copier et coller la commande suivante dans votre invite Git Bash, puis appuyez sur Entrée. Cette commande génère la syntaxe de la valeur de constante de chaîne leafPrivateKey et l’écrit dans la sortie.

      sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' unencrypted-device-key.pem
      

      Copiez et collez le texte de la clé privée de sortie pour la valeur de constante.

    5. Enregistrez vos modifications.

  5. Générez l’exemple, puis accédez au dossier target.

    mvn clean install
    cd target
    
  6. La génération crée le fichier .jar dans le dossier target avec le format de fichier suivant : provisioning-x509-sample-{version}-with-deps.jar ; par exemple : provisioning-x509-sample-1.8.1-with-deps.jar. Exécutez le fichier .jar. Vous devrez peut-être remplacer la version dans la commande suivant.

    java -jar ./provisioning-x509-sample-1.8.1-with-deps.jar
    

    L’exemple se connecte à DPS, qui provisionne l’appareil sur un hub IoT. Une fois l’appareil provisionné, l’exemple envoie des messages de test au hub IoT.

    Starting...
    Beginning setup.
    WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
    2022-05-11 09:42:05,025 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Initialized a ProvisioningDeviceClient instance using SDK version 2.0.0
    2022-05-11 09:42:05,027 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Starting provisioning thread...
    Waiting for Provisioning Service to register
    2022-05-11 09:42:05,030 INFO (global.azure-devices-provisioning.net-6255a8ba-CxnPendingConnectionId-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Opening the connection to device provisioning service...
    2022-05-11 09:42:05,252 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Connection to device provisioning service opened successfully, sending initial device registration message
    2022-05-11 09:42:05,286 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-RegisterTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask] - Authenticating with device provisioning service using x509 certificates
    2022-05-11 09:42:06,083 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Waiting for device provisioning service to provision this device...
    2022-05-11 09:42:06,083 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Current provisioning status: ASSIGNING
    Waiting for Provisioning Service to register
    2022-05-11 09:42:15,685 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Device provisioning service assigned the device successfully
    IotHUb Uri : MyExampleHub.azure-devices.net
    Device ID : java-device-01
    2022-05-11 09:42:25,057 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true
    2022-05-11 09:42:25,080 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true
    2022-05-11 09:42:25,087 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Initialized a DeviceClient instance using SDK version 2.0.3
    2022-05-11 09:42:25,129 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - Opening MQTT connection...
    2022-05-11 09:42:25,150 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT CONNECT packet...
    2022-05-11 09:42:25,982 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT CONNECT packet was acknowledged
    2022-05-11 09:42:25,983 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT SUBSCRIBE packet for topic devices/java-device-01/messages/devicebound/#
    2022-05-11 09:42:26,068 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT SUBSCRIBE packet for topic devices/java-device-01/messages/devicebound/# was acknowledged
    2022-05-11 09:42:26,068 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - MQTT connection opened successfully
    2022-05-11 09:42:26,070 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - The connection to the IoT Hub has been established
    2022-05-11 09:42:26,071 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Updating transport status to new status CONNECTED with reason CONNECTION_OK
    2022-05-11 09:42:26,071 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceIO] - Starting worker threads
    2022-05-11 09:42:26,073 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking connection status callbacks with new status details
    2022-05-11 09:42:26,074 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Client connection opened successfully
    2022-05-11 09:42:26,075 INFO (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Device client opened successfully
    Sending message from device to IoT Hub...
    2022-05-11 09:42:26,077 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Message was queued to be sent later ( Message details: Correlation Id [54d9c6b5-3da9-49fe-9343-caa6864f9a02] Message Id [28069a3d-f6be-4274-a48b-1ee539524eeb] )
    Press any key to exit...
    2022-05-11 09:42:26,079 DEBUG (MyExampleHub.azure-devices.net-java-device-01-ee6c362d-Cxn7a1fb819-e46d-4658-9b03-ca50c88c0440-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Sending message ( Message details: Correlation Id [54d9c6b5-3da9-49fe-9343-caa6864f9a02] Message Id [28069a3d-f6be-4274-a48b-1ee539524eeb] )
    2022-05-11 09:42:26,422 DEBUG (MQTT Call: java-device-01) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - IotHub message was acknowledged. Checking if there is record of sending this message ( Message details: Correlation Id [54d9c6b5-3da9-49fe-9343-caa6864f9a02] Message Id [28069a3d-f6be-4274-a48b-1ee539524eeb] )
    2022-05-11 09:42:26,425 DEBUG (MyExampleHub.azure-devices.net-java-device-01-ee6c362d-Cxn7a1fb819-e46d-4658-9b03-ca50c88c0440-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking the callback function for sent message, IoT Hub responded to message ( Message details: Correlation Id [54d9c6b5-3da9-49fe-9343-caa6864f9a02] Message Id [28069a3d-f6be-4274-a48b-1ee539524eeb] ) with status OK
    Message sent!
    

Confirmer l’inscription du provisionnement de votre appareil

Pour connaître le hub IoT sur lequel votre appareil a été approvisionné, examinez les détails de l’inscription individuelle que vous avez créée précédemment :

  1. Dans le Portail Azure, accédez au service d’approvisionnement des appareils.

  2. Dans le menu Paramètres, sélectionnez Gérer les inscriptions.

  3. Sélectionnez Inscriptions individuelles. L’entrée d’inscription X.509 que vous avez créée précédemment, my-x509-device, doit apparaître dans la liste.

  4. Sélectionnez l’entrée d’inscription. Le hub IoT auquel votre appareil a été attribué et son ID d’appareil apparaît sous État d’inscription.

Pour vérifier l’appareil dans votre hub IoT :

  1. Dans le Portail Azure, accédez au hub IoT auquel votre appareil a été attribué.

  2. Dans le menu Gestion des périphériques, sélectionnez Appareils.

  3. Si votre appareil a été approvisionné correctement, son ID d’appareil, my-x509-device, doit apparaître dans la liste, avec l’État défini sur Activé. Si vous ne voyez pas votre appareil, sélectionnez Actualiser.

    Screenshot that shows the device is registered with the IoT hub in Azure portal.

Important

Si vous avez modifié la valeur par défaut de l’état du jumeau d’appareil initial dans l’entrée d’inscription de votre appareil, l’état du jumeau souhaité peut être extrait du hub et agir en conséquence. Pour en savoir plus, consultez Comprendre et utiliser les jumeaux d’appareil IoT Hub

Nettoyer les ressources

Si vous envisagez de continuer à manipuler et à explorer l’exemple de client d’appareil, ne nettoyez pas les ressources créées dans ce guide de démarrage rapide. Sinon, effectuez les étapes suivantes pour supprimer toutes les ressources créées par ce guide de démarrage rapide.

Supprimer l’inscription de votre appareil

  1. Fermez la fenêtre de sortie de l’exemple de client d’appareil sur votre machine.

  2. Dans le menu de gauche du portail Azure, sélectionnez Toutes les ressources.

  3. Sélectionnez votre service Device Provisioning.

  4. Dans le menu Paramètres, sélectionnez Gérer les inscriptions.

  5. Sélectionnez l’onglet Inscriptions individuelles.

  6. Cochez la case à côté de l’ID d’inscription de l’appareil que vous avez inscrit dans ce guide de démarrage rapide.

  7. En haut de la page, sélectionnez Supprimer.

Supprimer l’inscription de votre appareil dans IoT Hub

  1. Dans le menu de gauche du portail Azure, sélectionnez Toutes les ressources.

  2. Sélectionnez votre hub IoT.

  3. Dans le menu Explorateurs, sélectionnez Appareils IoT.

  4. Cochez la case à côté de l’ID d’appareil de l’appareil que vous avez inscrit dans ce guide de démarrage rapide.

  5. En haut de la page, sélectionnez Supprimer.

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez approvisionné un seul appareil sur votre hub IoT à l’aide d’une inscription individuelle. Ensuite, découvrez comment approvisionner des appareils multiples sur plusieurs hubs.