Delen via


Quickstart: Een gesimuleerd X.509-certificaatapparaat inrichten

In deze quickstart maakt u een gesimuleerd apparaat op uw Windows-computer. Het gesimuleerde apparaat is geconfigureerd voor het gebruik van X.509-certificaatverklaring voor verificatie. Nadat u uw apparaat hebt geconfigureerd, richt u het vervolgens in op uw IoT-hub met behulp van de Azure IoT Hub Device Provisioning Service.

Als u niet bekend bent met het inrichtingsproces, raadpleegt u het inrichtingsoverzicht . Controleer ook of u de stappen in IoT Hub Device Provisioning Service instellen met Azure Portal hebt voltooid voordat u verdergaat.

In deze quickstart ziet u een oplossing voor een Windows-werkstation. U kunt echter ook de procedures op Linux uitvoeren. Zie Zelfstudie: Inrichten voor geolatentie voor een Linux-voorbeeld.

Vereisten

De volgende vereisten gelden voor een ontwikkelomgeving in Windows. Voor Linux of macOS raadpleegt u het desbetreffende gedeelte in Uw ontwikkelomgeving voorbereiden in de SDK-documentatie.

  • Installeer Visual Studio 2022 met de workload Desktopontwikkeling met C++ . Visual Studio 2015, Visual Studio 2017 en Visual Studio 19 worden ook ondersteund. Voor Linux of macOS raadpleegt u het desbetreffende gedeelte in Uw ontwikkelomgeving voorbereiden in de SDK-documentatie.

  • Installeer het nieuwste CMake-buildsysteem. Controleer de optie waarmee het uitvoerbare CMake-bestand aan uw pad wordt toegevoegd.

    Belangrijk

    Controleer of de vereisten voor Visual Studio (Visual Studio en de workload Desktopontwikkeling met C++) op uw computer zijn geïnstalleerd voordat u de CMake installatie start. Zodra aan de vereisten is voldaan en de download is geverifieerd, installeert u het CMake-bouwsysteem. Houd er ook rekening mee dat oudere versies van het CMake-buildsysteem het oplossingsbestand dat in dit artikel wordt gebruikt, niet kunnen genereren. Zorg ervoor dat u de nieuwste versie van CMake gebruikt.

De volgende vereisten gelden voor een ontwikkelomgeving in Windows. Voor Linux of macOS raadpleegt u het desbetreffende gedeelte in Uw ontwikkelomgeving voorbereiden in de SDK-documentatie.

  • Installeer .NET SDK 6.0 of hoger op uw Windows-computer. U kunt de volgende opdracht gebruiken om uw versie te controleren.

    dotnet --info
    

De volgende vereisten gelden voor een ontwikkelomgeving in Windows. Voor Linux of macOS raadpleegt u het desbetreffende gedeelte in Uw ontwikkelomgeving voorbereiden in de SDK-documentatie.

De volgende vereisten gelden voor een ontwikkelomgeving in Windows.

De volgende vereisten gelden voor een ontwikkelomgeving in Windows. Voor Linux of macOS raadpleegt u het desbetreffende gedeelte in Uw ontwikkelomgeving voorbereiden in de SDK-documentatie.

  • Installeer de meest recente versie van Git. Zorg ervoor dat Git is toegevoegd aan de omgevingsvariabelen die toegankelijk zijn voor het opdrachtvenster. Zie de Git-clienthulpprogramma's van Software Freedom Conservancy voor de nieuwste versie van git hulpprogramma's die u kunt installeren, waaronder Git Bash, de opdrachtregel-app die u kunt gebruiken om te communiceren met uw lokale Git-opslagplaats.

  • Zorg ervoor dat OpenSSL op uw computer is geïnstalleerd. In Windows bevat uw installatie van Git een installatie van OpenSSL. U kunt OpenSSL openen via de Git Bash-prompt. Als u wilt controleren of OpenSSL is geïnstalleerd, opent u een Git Bash-prompt en voert u deze in openssl version.

    Notitie

    Tenzij u bekend bent met OpenSSL en deze al op uw Windows-computer hebt geïnstalleerd, raden we u aan OpenSSL te gebruiken vanuit de Git Bash-prompt. U kunt er ook voor kiezen om de broncode te downloaden en OpenSSL te bouwen. Zie de pagina OpenSSL Downloads voor meer informatie. U kunt ook OpenSSL vooraf downloaden van een derde partij. Zie de OpenSSL-wiki voor meer informatie. Microsoft biedt geen garanties over de geldigheid van pakketten die van derden zijn gedownload. Als u ervoor kiest om OpenSSL te bouwen of te downloaden, moet u ervoor zorgen dat het binaire bestand openSSL toegankelijk is in uw pad en dat de OPENSSL_CNF omgevingsvariabele is ingesteld op het pad van het bestand openssl.cnf .

  • Open zowel een Windows-opdrachtprompt als een Git Bash-prompt.

    Bij de stappen in deze quickstart wordt ervan uitgegaan dat u een Windows-computer en de OpenSSL-installatie gebruikt die is geïnstalleerd als onderdeel van Git. U gebruikt de Git Bash-prompt om OpenSSL-opdrachten uit te voeren en de Windows-opdrachtprompt voor alles anders. Als u Linux gebruikt, kunt u alle opdrachten uit een Bash-shell uitgeven.

Uw ontwikkelomgeving voorbereiden

In deze sectie bereidt u een ontwikkelomgeving voor die wordt gebruikt om de Azure IoT C SDK te bouwen. De voorbeeldcode probeert het apparaat in te richten tijdens de opstartvolgorde van het apparaat.

  1. Open een webbrowser en ga naar de releasepagina van de Azure IoT C SDK.

  2. Selecteer het tabblad Tags boven aan de pagina.

  3. Kopieer de tagnaam voor de nieuwste versie van de Azure IoT C SDK.

  4. Voer in de Windows-opdrachtprompt de volgende opdrachten uit om de nieuwste versie van de Azure IoT Device SDK voor C GitHub-opslagplaats te klonen. Vervang <release-tag> door de tag die u in de vorige stap hebt gekopieerd, bijvoorbeeld: 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
    

    Het kan enkele minuten duren voordat deze bewerking is voltooid.

  5. Wanneer de bewerking is voltooid, voert u de volgende opdrachten uit vanuit de azure-iot-sdk-c map:

    mkdir cmake
    cd cmake
    
  6. De voorbeeldcode gebruikt een X.509-certificaat voor attestation via x.509-verificatie. Voer de volgende opdracht uit om een versie van de SDK te bouwen die specifiek is voor uw platform voor ontwikkeling dat de client voor apparaatinrichting bevat. Er wordt een Visual Studio-oplossing voor het gesimuleerde apparaat gegenereerd in de map cmake.

    Wanneer u het pad opgeeft waarmee -Dhsm_custom_lib in de volgende opdracht wordt gebruikt, moet u het absolute pad naar de bibliotheek gebruiken in de cmake map die u eerder hebt gemaakt. In het weergegeven pad wordt ervan uitgegaan dat u de C SDK hebt gekloond in de hoofdmap van het C-station. Als u een andere map hebt gebruikt, past u het pad dienovereenkomstig aan.

    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 ..
    

Tip

Als cmake uw C++-compiler niet wordt gevonden, krijgt u mogelijk buildfouten tijdens het uitvoeren van de bovenstaande opdracht. Als dit gebeurt, voert u de opdracht uit in de Visual Studio-opdrachtprompt.

  1. Wanneer de build slaagt, zien de laatste paar uitvoerlijnen er ongeveer als volgt uit:

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

Kloon in de Windows-opdrachtprompt de Azure IoT SDK voor C# GitHub-opslagplaats met behulp van de volgende opdracht:

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

Kloon in uw Windows-opdrachtprompt de Azure IoT SDK voor Node.js GitHub-opslagplaats met behulp van de volgende opdracht:

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

Kloon in de Windows-opdrachtprompt de Azure IoT Device SDK voor Python GitHub-opslagplaats met behulp van de volgende opdracht:

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

Notitie

De voorbeelden die in deze zelfstudie worden gebruikt, bevinden zich in de v2-vertakking van de opslagplaats azure-iot-sdk-python. V3 van de Python SDK is beschikbaar voor gebruik in bètaversie.

  1. Kloon in uw Windows-opdrachtprompt de Azure IoT-voorbeelden voor Java GitHub-opslagplaats met behulp van de volgende opdracht:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  2. Ga naar de hoofdmap azure-iot-sdk-java en bouw het project om alle benodigde pakketten te downloaden.

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

Een zelfondertekend X.509-apparaatcertificaat maken

In deze sectie gebruikt u OpenSSL om een zelfondertekend X.509-certificaat en een persoonlijke sleutel te maken. Dit certificaat wordt geüpload naar uw exemplaar van de inrichtingsservice en geverifieerd door de service.

Let op

Gebruik alleen certificaten die zijn gemaakt met OpenSSL in deze quickstart voor ontwikkelingstests. Gebruik deze certificaten niet in een productieomgeving. Deze certificaten verlopen na 30 dagen en bevatten mogelijk in code vastgelegde wachtwoorden, zoals 1234. Zie Een X.509 CA-certificaat verkrijgen in de Documentatie van Azure IoT Hub voor meer informatie over het verkrijgen van certificaten die geschikt zijn voor gebruik in productie.

Voer de stappen in deze sectie uit in uw Git Bash-prompt.

  1. Navigeer in uw Git Bash-prompt naar een map waarin u uw certificaten wilt maken.

  2. Voer de volgende opdracht uit:

    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"
    

    Belangrijk

    De extra slash die wordt opgegeven voor de onderwerpnaam (//CN=my-x509-device) is alleen vereist om de tekenreeks te escapen met Git op Windows-platforms.

  3. Wanneer u wordt gevraagd om PEM-wachtwoordzin in te voeren:, gebruikt u de wachtwoordzin 1234.

  4. Wanneer u wordt gevraagd te verifiëren - VOER PEM-wachtwoordzin in:, gebruikt u de wachtwoordzin 1234 opnieuw.

    Er moet nu een certificaatbestand met een openbare sleutel (device-cert.pem) en een persoonlijk sleutelbestand (device-key.pem) worden gegenereerd in de map waarin u de openssl opdracht hebt uitgevoerd.

    Het certificaatbestand heeft de algemene naam van het onderwerp (CN) ingesteld op my-x509-device. Voor X.509-gebaseerde inschrijvingen wordt de registratie-id ingesteld op de algemene naam. De registratie-id is een niet-hoofdlettergevoelige tekenreeks van alfanumerieke tekens plus de speciale tekens: '-', '.', '_', . ':' Het laatste teken moet alfanumeriek of streepje ('-') zijn. De algemene naam moet voldoen aan deze indeling. DPS ondersteunt registratie-id's van maximaal 128 tekens; De maximale lengte van de algemene naam van het onderwerp in een X.509-certificaat is echter 64 tekens. De registratie-id is daarom beperkt tot 64 tekens bij het gebruik van X.509-certificaten.

  5. Het certificaatbestand is base 64 gecodeerd. Als u de algemene naam van het onderwerp (CN) en andere eigenschappen van het certificaatbestand wilt weergeven, voert u de volgende opdracht in:

    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. Voor de voorbeeldcode is een persoonlijke sleutel vereist die niet is versleuteld. Voer de volgende opdracht uit om een niet-versleutelde persoonlijke sleutel te maken:

    winpty openssl rsa -in device-key.pem -out unencrypted-device-key.pem
    
  2. Wanneer u wordt gevraagd wachtwoordzin in te voeren voor device-key.pem:, gebruikt u dezelfde wachtwoordzin die u eerder hebt gedaan. 1234

Houd de Git Bash-prompt open. U hebt deze later in deze quickstart nodig.

De C#-voorbeeldcode is ingesteld voor het gebruik van X.509-certificaten die zijn opgeslagen in een met een wachtwoord beveiligd PKCS#12-bestand (certificate.pfx). U hebt nog steeds het met PEM opgemaakte openbare-sleutelcertificaatbestand (device-cert.pem) nodig dat u zojuist hebt gemaakt om een afzonderlijke inschrijvingsvermelding te maken verderop in deze quickstart.

  1. Voer de volgende opdracht in om het bestand met de PKCS12-indeling te genereren dat door het voorbeeld wordt verwacht:

    winpty openssl pkcs12 -inkey device-key.pem -in device-cert.pem -export -out certificate.pfx
    
  2. Wanneer u wordt gevraagd wachtwoordzin in te voeren voor device-key.pem:, gebruikt u dezelfde wachtwoordzin die u eerder hebt gedaan. 1234

  3. Wanneer u wordt gevraagd om Exportwachtwoord in te voeren: gebruikt u het wachtwoord 1234.

  4. Gebruik het wachtwoord opnieuw wanneer u wordt gevraagd te verifiëren - Voer een exportwachtwoord 1234 in:

    Er moet nu een bestand met pkCS12-indeling (certificate.pfx) worden gegenereerd in de map waarin u de openssl opdracht hebt uitgevoerd.

  5. Kopieer het met PKCS12 opgemaakte certificaatbestand naar de projectmap voor het voorbeeld van het inrichten van X.509-apparaten. Het opgegeven pad is relatief ten opzichte van de locatie waar u de voorbeeldopslagplaats hebt gedownload.

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

U hebt de Git Bash-prompt niet nodig voor de rest van deze quickstart. Het is echter mogelijk dat u het certificaat open wilt houden om uw certificaat te controleren als u in latere stappen problemen ondervindt.

  1. Voor de voorbeeldcode is een persoonlijke sleutel vereist die niet is versleuteld. Voer de volgende opdracht uit om een niet-versleutelde persoonlijke sleutel te maken:

    winpty openssl rsa -in device-key.pem -out unencrypted-device-key.pem
    
  2. Wanneer u wordt gevraagd wachtwoordzin in te voeren voor device-key.pem:, gebruikt u dezelfde wachtwoordzin die u eerder hebt gedaan. 1234

  3. Kopieer het apparaatcertificaat en de niet-versleutelde persoonlijke sleutel naar de projectmap voor het X.509-apparaatinrichtingsvoorbeeld. Het opgegeven pad is relatief ten opzichte van de locatie waar u de SDK hebt gedownload.

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

U hebt de Git Bash-prompt niet nodig voor de rest van deze quickstart. Het is echter mogelijk dat u het certificaat open wilt houden om uw certificaat te controleren als u in latere stappen problemen ondervindt.

  1. Kopieer het apparaatcertificaat en de persoonlijke sleutel naar de projectmap voor het voorbeeld van het inrichten van X.509-apparaten. Het opgegeven pad is relatief ten opzichte van de locatie waar u de SDK hebt gedownload.

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

U hebt de Git Bash-prompt niet nodig voor de rest van deze quickstart. Het is echter mogelijk dat u het certificaat open wilt houden om uw certificaat te controleren als u in latere stappen problemen ondervindt.

  1. Voor de Java-voorbeeldcode is een persoonlijke sleutel vereist die niet is versleuteld. Voer de volgende opdracht uit om een niet-versleutelde persoonlijke sleutel te maken:

    winpty openssl pkey -in device-key.pem -out unencrypted-device-key.pem
    
  2. Wanneer u wordt gevraagd wachtwoordzin in te voeren voor device-key.pem:, gebruikt u dezelfde wachtwoordzin die u eerder hebt gedaan. 1234

Houd de Git Bash-prompt open. U hebt deze later in deze quickstart nodig.

Een apparaatinschrijving maken

Azure IoT Device Provisioning Service ondersteunt twee typen inschrijvingen:

In dit artikel wordt een afzonderlijke inschrijving gedemonstreerd voor één apparaat dat moet worden ingericht met een IoT-hub.

  1. Meld u aan bij Azure Portal en navigeer naar uw Device Provisioning Service-exemplaar.

  2. Selecteer Inschrijvingen beheren in de sectie Instellingen van het navigatiemenu.

  3. Selecteer het tabblad Afzonderlijke inschrijvingen en selecteer vervolgens Afzonderlijke inschrijving toevoegen.

    Schermopname van de optie Afzonderlijke inschrijving toevoegen.

  4. Geef op de pagina Registratie en inrichting van de pagina Inschrijving toevoegen de volgende informatie op om de inschrijvingsgegevens te configureren:

    Veld Beschrijving
    Attest Selecteer X.509-clientcertificaten als attestation-mechanisme.
    X.509-certificaatinstellingen Upload een of twee certificaten die worden gebruikt om het apparaat voor deze inschrijving te verifiëren.
    Inrichtingsstatus Schakel het selectievakje Deze inschrijving inschakelen in als u wilt dat deze inschrijving beschikbaar is om het apparaat in te richten. Schakel dit selectievakje uit als u wilt dat de inschrijving wordt uitgeschakeld. U kunt deze instelling later wijzigen.
    Beleid voor opnieuw inrichten Kies een beleid voor opnieuw inrichten dat aangeeft hoe DPS apparaten verwerkt die herinrichting aanvragen. Zie Beleid voor opnieuw inrichten voor meer informatie.
  5. Selecteer Volgende: IoT-hubs.

  6. Geef op het tabblad IoT Hubs van de pagina Inschrijving toevoegen de volgende informatie op om te bepalen voor welke IoT-hubs de inschrijving apparaten kan inrichten:

    Veld Beschrijving
    IoT-doelhubs Selecteer een of meer gekoppelde IoT-hubs of voeg een nieuwe koppeling toe aan een IoT-hub. Zie IoT-hubs koppelen en beheren voor meer informatie over het koppelen van IoT-hubs aan uw DPS-exemplaar.
    Toewijzingsbeleid Als u meer dan één gekoppelde IoT-hub hebt geselecteerd, selecteert u hoe u apparaten wilt toewijzen aan de verschillende hubs. Zie Toewijzingsbeleid gebruiken voor meer informatie over toewijzingsbeleid.

    Als u slechts één gekoppelde IoT-hub hebt geselecteerd, raden we u aan het gelijkmatig gewogen distributiebeleid te gebruiken.
  7. Volgende selecteren: Apparaatinstellingen

  8. Geef op het tabblad Apparaatinstellingen van de pagina Inschrijving toevoegen de volgende informatie op om te definiëren hoe nieuw ingerichte apparaten worden geconfigureerd:

    Veld Beschrijving
    Apparaat-id Geef een apparaat-id op die wordt toegewezen aan het ingerichte apparaat in IoT Hub. Als u geen apparaat-id opgeeft, wordt de registratie-id gebruikt.
    IoT Edge Schakel IoT Edge in op ingerichte apparaten als op het ingerichte apparaat Azure IoT Edge wordt uitgevoerd. Schakel dit selectievakje uit als deze inschrijving is bedoeld voor een apparaat dat niet is ingeschakeld voor IoT Edge.
    Apparaattags Gebruik dit tekstvak om alle tags op te geven die u wilt toepassen op de apparaatdubbel van het ingerichte apparaat.
    Gewenste eigenschappen Gebruik dit tekstvak om de gewenste eigenschappen op te geven die u wilt toepassen op de apparaatdubbel van het ingerichte apparaat.

    Zie Apparaatdubbels begrijpen en gebruiken in IoT Hub voor meer informatie.

  9. Selecteer Volgende: Beoordelen en maken.

  10. Controleer op het tabblad Controleren en maken al uw waarden en selecteer Vervolgens Maken.

De apparaatinrichtingscode voorbereiden en uitvoeren

In deze sectie werkt u de voorbeeldcode bij om de opstartvolgorde van het apparaat te verzenden naar uw Device Provisioning Service-exemplaar. Deze opstartvolgorde zorgt ervoor dat het apparaat wordt herkend en toegewezen aan een IoT-hub die is gekoppeld aan het DPS-exemplaar.

In deze sectie gebruikt u uw Git Bash-prompt en de Visual Studio IDE.

De code voor de apparaatinrichting configureren

In deze sectie werkt u de voorbeeldcode bij met de informatie van uw Device Provisioning Service-exemplaar.

  1. Selecteer in Azure Portal het tabblad Overzicht voor Device Provisioning Service.

  2. Kopieer de waarde van het id-bereik .

    Schermopname van het id-bereik in Azure Portal.

  3. Start Visual Studio en open het nieuwe oplossingsbestand dat is gemaakt in de map cmake die u hebt gemaakt in de hoofdmap van de Git-opslagplaats azure-iot-sdk-c. Het oplossingsbestand heeft de naam azure_iot_sdks.sln.

  4. Navigeer in Solution Explorer voor Visual Studio naar Provision_Samples > prov_dev_client_sample > bronbestanden en open prov_dev_client_sample.c.

  5. Zoek de constante en vervang de id_scope waarde door de waarde van het id-bereik die u in stap 2 hebt gekopieerd.

    static const char* id_scope = "0ne00000A0A";
    
  6. Zoek de definitie voor de functie main() op in hetzelfde bestand. Zorg ervoor dat de hsm_type variabele is ingesteld op 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. Sla uw wijzigingen op.

  8. Klik met de rechtermuisknop op het prov_dev_client_sample project en selecteer Instellen als opstartproject.

De stub-code voor de aangepaste HSM configureren

De bijzonderheden van de interactie met de daadwerkelijke beveiligde opslag op basis van hardware is afhankelijk van de hardware. Als gevolg hiervan worden het certificaat en de persoonlijke sleutel die door het gesimuleerde apparaat in deze quickstart wordt gebruikt, vastgelegd in de stubcode van de aangepaste HSM (Hardware Security Module).

De aangepaste HSM-stubcode bijwerken om de identiteit van het apparaat met id my-x509-devicete simuleren:

  1. Navigeer in Solution Explorer voor Visual Studio naar Provision_Samples > custom_hsm_example > bronbestanden en open custom_hsm_example.c.

  2. Werk de tekenreekswaarde van de COMMON_NAME tekenreeksconstante bij met behulp van de algemene naam die u hebt gebruikt bij het genereren van het apparaatcertificaat. my-x509-device

    static const char* const COMMON_NAME = "my-x509-device";
    
  3. Werk de tekenreekswaarde van de CERTIFICATE constante tekenreeks bij met behulp van het apparaatcertificaat device-cert.pem, dat u eerder hebt gegenereerd.

    De syntaxis van certificaattekst in het voorbeeld moet het volgende patroon volgen zonder extra spaties of parsering uitgevoerd door Visual Studio.

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

    Het handmatig bijwerken van deze tekenreekswaarde kan gevoelig zijn voor fouten. Als u de juiste syntaxis wilt genereren, kunt u de volgende opdracht kopiëren en plakken in uw Git Bash-prompt en drukt u op Enter. Met deze opdracht wordt de syntaxis voor de CERTIFICATE constante tekenreekswaarde gegenereerd en naar de uitvoer geschreven.

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

    Kopieer en plak de tekst van het uitvoercertificaat voor de constante waarde.

  4. Werk de tekenreekswaarde van de PRIVATE_KEY constante bij met de niet-versleutelde persoonlijke sleutel voor uw apparaatcertificaat, niet-versleutelde-device-key.pem.

    De syntaxis van de persoonlijke-sleuteltekst moet het volgende patroon volgen zonder extra spaties of parsering uitgevoerd door Visual Studio.

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

    Het handmatig bijwerken van deze tekenreekswaarde kan gevoelig zijn voor fouten. Als u de juiste syntaxis wilt genereren, kunt u de volgende opdracht kopiëren en plakken in uw Git Bash-prompt en drukt u op Enter. Met deze opdracht wordt de syntaxis voor de PRIVATE_KEY constante tekenreekswaarde gegenereerd en naar de uitvoer geschreven.

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

    Kopieer en plak de tekst van de persoonlijke sleutel van de uitvoer voor de constante waarde.

  5. Sla uw wijzigingen op.

  6. Klik met de rechtermuisknop op het custom_hsm_-_example project en selecteer Build.

    Belangrijk

    U moet het custom_hsm_example project bouwen voordat u de rest van de oplossing in de volgende sectie bouwt.

De voorbeeldtoepassing uitvoeren

  1. Selecteer in het menu van Visual Studio de optie Debug>Start without debugging om de oplossing uit te voeren. Als u wordt gevraagd om het project opnieuw te bouwen, selecteert u Ja om het project opnieuw te bouwen voordat u het uitvoert.

    De volgende uitvoer is een voorbeeld van het gesimuleerde apparaat my-x509-device dat is opgestart en verbinding maakt met de inrichtingsservice. Het apparaat is toegewezen aan een IoT-hub en geregistreerd:

    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:
    

In deze sectie gebruikt u de Windows-opdrachtprompt.

  1. Selecteer in Azure Portal het tabblad Overzicht voor Device Provisioning Service.

  2. Kopieer de waarde van het id-bereik .

    Schermopname van het id-bereik in Azure Portal.

  3. Ga in de Windows-opdrachtprompt naar de map X509Sample. Deze map bevindt zich in de map .\azure-iot-sdk-csharp\provisioning\device\samples\getting started\X509Sample uit de map waar u de voorbeelden op uw computer hebt gekloond.

  4. Voer de volgende opdracht in om het X.509-voorbeeld van het inrichten van apparaten te bouwen en uit te voeren (vervang de <IDScope> waarde door het id-bereik dat u in de vorige sectie hebt gekopieerd. Het certificaatbestand wordt standaard ingesteld op ./certificate.pfx en vraagt om het PFX-wachtwoord.

    dotnet run -- -s <IDScope>
    

    Als u het certificaat en wachtwoord als parameter wilt doorgeven, kunt u de volgende indeling gebruiken.

    Notitie

    Aanvullende parameters kunnen worden doorgegeven tijdens het uitvoeren van de toepassing om het TransportType (-t) en het GlobalDeviceEndpoint (-g) te wijzigen.

    dotnet run -- -s 0ne00000A0A -c certificate.pfx -p 1234
    
  5. Het apparaat maakt verbinding met DPS en wordt toegewezen aan een IoT-hub. Vervolgens verzendt het apparaat een telemetriebericht naar de IoT-hub.

    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.
    

In deze sectie gebruikt u de Windows-opdrachtprompt.

  1. Selecteer in Azure Portal het tabblad Overzicht voor Device Provisioning Service.

  2. Kopieer de waarde van het id-bereik .

    Schermopname van het id-bereik in Azure Portal.

  3. Ga in de Windows-opdrachtprompt naar de voorbeeldmap en installeer de pakketten die nodig zijn voor het voorbeeld. Het weergegeven pad is relatief ten opzichte van de locatie waar u de SDK hebt gekloond.

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

    In het voorbeeld worden vijf omgevingsvariabelen gebruikt om een IoT-apparaat te verifiëren en in te richten met DPS. Deze omgevingsvariabelen zijn:

    Variabelenaam Beschrijving
    PROVISIONING_HOST Het eindpunt dat moet worden gebruikt om verbinding te maken met uw DPS-exemplaar. Gebruik voor deze quickstart het globale eindpunt. global.azure-devices-provisioning.net
    PROVISIONING_IDSCOPE Het id-bereik voor uw DPS-exemplaar.
    PROVISIONING_REGISTRATION_ID De registratie-id voor uw apparaat. Deze moet overeenkomen met de algemene naam van het onderwerp in het apparaatcertificaat.
    CERTIFICATE_FILE Het pad naar het certificaatbestand van het apparaat.
    KEY_FILE Het pad naar het persoonlijke sleutelbestand van uw apparaat.
  4. Voeg omgevingsvariabelen toe voor het globale apparaateindpunt en id-bereik. Vervang <id-scope> door de waarde die u in stap 2 hebt gekopieerd.

    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    set PROVISIONING_IDSCOPE=<id-scope>
    
  5. Stel de omgevingsvariabele in voor de apparaatregistratie-id. De registratie-id voor het IoT-apparaat moet overeenkomen met de algemene naam van het onderwerp op het apparaatcertificaat. Als u de stappen in deze quickstart hebt gevolgd om een zelfondertekend testcertificaat te genereren, my-x509-device is dit zowel de onderwerpnaam als de registratie-id voor het apparaat.

    set PROVISIONING_REGISTRATION_ID=my-x509-device
    
  6. Stel de omgevingsvariabelen in voor het apparaatcertificaat en (niet-versleutelde) persoonlijke sleutelbestanden van het apparaat.

    set CERTIFICATE_FILE=.\device-cert.pem
    set KEY_FILE=.\unencrypted-device-key.pem
    
  7. Voer het voorbeeld uit en controleer of het apparaat is ingericht.

    node register_x509.js
    

    Als het goed is, ziet u uitvoer die lijkt op het volgende voorbeeld:

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

In deze sectie gebruikt u de Windows-opdrachtprompt.

  1. Selecteer in Azure Portal het tabblad Overzicht voor Device Provisioning Service.

  2. Kopieer de waarden voor het id-bereik en het globale apparaateindpunt.

    Schermopname van het id-bereik en het globale apparaateindpunt in Azure Portal.

  3. Ga in de Windows-opdrachtprompt naar de map van het provision_x509.py voorbeeld. Het weergegeven pad is relatief ten opzichte van de locatie waar u de SDK hebt gekloond.

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

    In dit voorbeeld worden zes omgevingsvariabelen gebruikt om een IoT-apparaat te verifiëren en in te richten met DPS. Deze omgevingsvariabelen zijn:

    Variabelenaam Beschrijving
    PROVISIONING_HOST Het globale eindpunt dat wordt gebruikt om verbinding te maken met uw DPS-exemplaar.
    PROVISIONING_IDSCOPE Het id-bereik voor uw DPS-exemplaar.
    DPS_X509_REGISTRATION_ID De registratie-id voor uw apparaat. Deze moet ook overeenkomen met de onderwerpnaam op het apparaatcertificaat.
    X509_CERT_FILE Het pad naar het certificaatbestand van het apparaat.
    X509_KEY_FILE Het pad naar het persoonlijke sleutelbestand van het apparaatcertificaat.
    PASS_PHRASE De wachtwoordzin die u hebt gebruikt om het certificaat en het persoonlijke sleutelbestand () te versleutelen.1234
  4. Voeg de omgevingsvariabelen toe voor het globale apparaateindpunt en id-bereik.

    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    set PROVISIONING_IDSCOPE=<ID scope for your DPS resource>
    
  5. Stel de omgevingsvariabele in voor de registratie-id. De registratie-id voor het IoT-apparaat moet overeenkomen met de onderwerpnaam op het apparaatcertificaat. Als u de stappen in deze quickstart hebt gevolgd om een zelfondertekend testcertificaat te genereren, my-x509-device is dit zowel de onderwerpnaam als de registratie-id voor het apparaat.

    set DPS_X509_REGISTRATION_ID=my-x509-device
    
  6. Stel de omgevingsvariabelen in voor het certificaatbestand, het persoonlijke-sleutelbestand en de wachtwoordzin.

    set X509_CERT_FILE=./device-cert.pem
    set X509_KEY_FILE=./device-key.pem
    set PASS_PHRASE=1234
    
  7. Bekijk de code voor provision_x509.py. Als u python versie 3.7 of hoger niet gebruikt, moet u de hier genoemde codewijziging doorvoeren om uw wijzigingen te vervangen asyncio.run(main()) en op te slaan.

  8. Voet het voorbeeld uit. Het voorbeeld maakt verbinding met DPS, die het apparaat inricht op een IoT-hub. Nadat het apparaat is ingericht, verzendt het voorbeeld enkele testberichten naar de IoT-hub.

    $ 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
    

In deze sectie gebruikt u zowel uw Windows-opdrachtprompt als uw Git Bash-prompt.

  1. Selecteer in Azure Portal het tabblad Overzicht voor Device Provisioning Service.

  2. Kopieer de waarden voor het id-bereik en het globale apparaateindpunt.

    Schermopname van het id-bereik en het globale apparaateindpunt in Azure Portal.

  3. Navigeer in de Windows-opdrachtprompt naar de voorbeeldprojectmap. Het weergegeven pad is relatief ten opzichte van de locatie waar u de SDK hebt gekloond

    cd .\azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-X509-sample
    
  4. Voer de inrichtingsservice en X.509-identiteitsgegevens in de voorbeeldcode in. Deze informatie wordt gebruikt tijdens het inrichten, voor attestation van het gesimuleerde apparaat, vóór de apparaatregistratie.

    1. Open het bestand .\src\main\java\samples\com\microsoft\azure\sdk\iot\ProvisioningX509Sample.java in uw favoriete editor.

    2. Werk de volgende waarden bij met het globale eindpunt id-bereik en inrichtingsservice dat u eerder hebt gekopieerd.

      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. Werk de waarde van de leafPublicPem constante tekenreeks bij met de waarde van uw certificaat, device-cert.pem.

      De syntaxis van certificaattekst moet het volgende patroon volgen zonder extra spaties of tekens.

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

      Het handmatig bijwerken van deze tekenreekswaarde kan gevoelig zijn voor fouten. Als u de juiste syntaxis wilt genereren, kunt u de volgende opdracht kopiëren en plakken in uw Git Bash-prompt en drukt u op Enter. Met deze opdracht wordt de syntaxis voor de leafPublicPem constante tekenreekswaarde gegenereerd en naar de uitvoer geschreven.

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

      Kopieer en plak de tekst van het uitvoercertificaat voor de constante waarde.

    4. Werk de tekenreekswaarde van de leafPrivateKey constante bij met de niet-versleutelde persoonlijke sleutel voor uw apparaatcertificaat, niet-versleutelde-device-key.pem.

      De syntaxis van de tekst van de persoonlijke sleutel moet het volgende patroon volgen zonder extra spaties of tekens.

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

      Het handmatig bijwerken van deze tekenreekswaarde kan gevoelig zijn voor fouten. Als u de juiste syntaxis wilt genereren, kunt u de volgende opdracht kopiëren en plakken in uw Git Bash-prompt en drukt u op Enter. Met deze opdracht wordt de syntaxis voor de leafPrivateKey constante tekenreekswaarde gegenereerd en naar de uitvoer geschreven.

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

      Kopieer en plak de tekst van de persoonlijke sleutel van de uitvoer voor de constante waarde.

    5. Sla uw wijzigingen op.

  5. Bouw het voorbeeld en ga vervolgens naar de target map.

    mvn clean install
    cd target
    
  6. De build-uitvoer .jar bestand in de target map met de volgende bestandsindeling: provisioning-x509-sample-{version}-with-deps.jar; bijvoorbeeld: provisioning-x509-sample-1.8.1-with-deps.jar. Voer het .jar-bestand uit. Mogelijk moet u de versie in de volgende opdracht vervangen.

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

    Het voorbeeld maakt verbinding met DPS, die het apparaat inricht op een IoT-hub. Nadat het apparaat is ingericht, verzendt het voorbeeld enkele testberichten naar de IoT-hub.

    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 [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] )
    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 [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] )
    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 [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] )
    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 [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) with status OK
    Message sent!
    

De registratie van de apparaatinrichting bevestigen

Bekijk de registratiegegevens van de afzonderlijke inschrijving die u eerder hebt gemaakt om te zien aan welke IoT-hub uw apparaat is ingericht:

  1. Ga in Azure Portal naar Device Provisioning Service.

  2. Selecteer Inschrijvingen beheren in het menu Instellingen.

  3. Selecteer Afzonderlijke inschrijvingen. De X.509-inschrijvingsvermelding die u eerder hebt gemaakt, my-x509-device, moet worden weergegeven in de lijst.

  4. Selecteer de inschrijvingsvermelding. De IoT-hub waaraan uw apparaat is toegewezen en de apparaat-id wordt weergegeven onder De registratiestatus.

Ga als volgende te werk om het apparaat in uw IoT-hub te verifiëren:

  1. Ga in Azure Portal naar de IoT-hub waaraan uw apparaat is toegewezen.

  2. Selecteer Apparaten in het menu Apparaatbeheer.

  3. Als uw apparaat is ingericht, moet de apparaat-id, my-x509-device, worden weergegeven in de lijst, waarbij status is ingesteld als ingeschakeld. Als u uw apparaat niet ziet, selecteert u Vernieuwen.

    Schermopname van het apparaat dat is geregistreerd bij de IoT-hub in Azure Portal.

Belangrijk

Als u de standaardwaarde van de initiële status van de apparaatdubbel hebt gewijzigd in de inschrijvingsvermelding voor uw apparaat, kan de gewenste status van de dubbel uit de hub worden gehaald en er dienovereenkomstig naar worden gehandeld. Zie Understand and use device twins in IoT Hub (Apparaatdubbelen begrijpen en gebruiken in IoT Hub) voor meer informatie

Resources opschonen

Als u van plan bent om door te gaan met het voorbeeld van de apparaatclient, moet u de resources die in deze quickstart zijn gemaakt, niet opschonen. Als u niet van plan bent om door te gaan, gebruikt u de volgende stappen om alle resources te verwijderen die door deze quickstart zijn gemaakt.

Uw apparaatinschrijving verwijderen

  1. Sluit het uitvoervenster van het voorbeeld van de apparaatclient op de computer.

  2. Selecteer Alle resources in het linkermenu in Azure Portal.

  3. Selecteer uw Device Provisioning Service.

  4. Selecteer Inschrijvingen beheren in het menu Instellingen.

  5. Selecteer het tabblad Afzonderlijke inschrijvingen .

  6. Schakel het selectievakje in naast de registratie-id van het apparaat dat u in deze quickstart hebt ingeschreven.

  7. Selecteer Verwijderen bovenaan de pagina.

Uw apparaatregistratie verwijderen uit IoT Hub

  1. Selecteer Alle resources in het linkermenu in Azure Portal.

  2. Selecteer uw IoT-hub.

  3. Selecteer IoT-apparaten in het menu Explorers.

  4. Schakel het selectievakje in naast de apparaat-id van het apparaat dat u in deze quickstart hebt geregistreerd.

  5. Selecteer Verwijderen bovenaan de pagina.

Volgende stappen

In deze quickstart hebt u één apparaat ingericht voor uw IoT-hub met behulp van een afzonderlijke inschrijving. Leer vervolgens hoe u meerdere apparaten in meerdere hubs inricht.