X.509-certificaten via HTTPS gebruiken zonder een SDK

In dit artikel gaat u een apparaat inrichten met x.509-certificaten via HTTPS zonder een Azure IoT DPS-apparaat-SDK te gebruiken. De meeste talen bieden bibliotheken voor het verzenden van HTTP-aanvragen, maar in plaats van zich te richten op een specifieke taal, gebruikt u in dit artikel het opdrachtregelprogramma cURL om te verzenden en te ontvangen via HTTPS.

U kunt de stappen in dit artikel volgen op een Linux- of een Windows-computer. Als u op Windows-subsysteem voor Linux (WSL) of op een Linux-computer werkt, kunt u alle opdrachten op uw lokale systeem invoeren in een Bash-prompt. Als u windows gebruikt, voert u alle opdrachten op uw lokale systeem in een GitBash-prompt in.

Dit artikel bevat meerdere paden, afhankelijk van het type inschrijvingsvermelding en X.509-certificaat(en) dat u wilt gebruiken. Nadat u de vereisten hebt geïnstalleerd, moet u het Overzicht lezen voordat u doorgaat.

Vereisten

  • Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.

  • Voer de stappen uit in IoT Hub Device Provisioning Service instellen met de Azure Portal.

  • Zorg ervoor dat Python 3.7 of hoger op uw computer is geïnstalleerd. U kunt uw versie van Python controleren door of python3 --versionuit te voerenpython --version.

  • Als u in Windows werkt, installeert u de nieuwste 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 moeten worden geïnstalleerd, waaronder Git Bash, de opdrachtregel-app die u kunt gebruiken om te communiceren met uw lokale Git-opslagplaats. In Windows voert u alle opdrachten op uw lokale systeem in een GitBash-prompt in.

  • Azure CLI. In dit artikel hebt u twee opties voor het uitvoeren van Azure CLI-opdrachten:

    • Gebruik de Azure Cloud Shell, een interactieve shell die CLI-opdrachten uitvoert in uw browser. Deze optie wordt aanbevolen omdat u niets hoeft te installeren. Als u Cloud Shell voor het eerst gebruikt, meldt u zich aan bij de Azure Portal. Volg de stappen in Cloud Shell quickstart naar Start Cloud Shell en Selecteer de Bash-omgeving.
    • Voer optioneel Azure CLI uit op uw lokale computer. Als Azure CLI al is geïnstalleerd, voert u uit az upgrade om de CLI en extensies bij te werken naar de huidige versie. Zie Azure CLI installeren om Azure CLI te installeren.
  • Als u in een Linux- of WSL-omgeving werkt, opent u een Bash-prompt om opdrachten lokaal uit te voeren. Als u in een Windows-omgeving werkt, opent u een GitBash-prompt.

Overzicht

In dit artikel worden drie scenario's behandeld en de eerste stappen die u gaat uitvoeren, zijn voor elk scenario verschillend. Als u het volgende wilt doen:

Nadat u de stappen voor het gekozen scenario hebt voltooid, kunt u doorgaan met Uw apparaat registreren en Een telemetriebericht verzenden.

Een apparaatcertificaat maken

Voor dit artikel gebruikt u een X.509-certificaat voor verificatie bij DPS met behulp van een afzonderlijke inschrijving of een inschrijvingsgroep.

Als u een afzonderlijke inschrijving gebruikt, kunt u een zelfondertekend X.509-certificaat of een certificaatketen gebruiken die bestaat uit het apparaatcertificaat plus een of meer handtekeningcertificaten. Als u een inschrijvingsgroep gebruikt, moet u een certificaatketen gebruiken.

Belangrijk

Voor X.509-inschrijvingsverificatie wordt de algemene onderwerpnaam (CN) van het apparaatcertificaat gebruikt als registratie-id voor het apparaat. De registratie-id is een hoofdlettergevoelige tekenreeks met alfanumerieke tekens plus de speciale tekens: '-', '.', '_', ':'. Het laatste teken moet alfanumeriek of streepje ('-') zijn. DPS ondersteunt registratie-id's met een lengte van maximaal 128 tekens; De algemene onderwerpnaam van een X.509-certificaat is echter beperkt tot 64 tekens. Als u de algemene onderwerpnaam voor uw apparaatcertificaat in de volgende stappen wijzigt, moet u ervoor zorgen dat het voldoet aan deze indeling.

Een zelfondertekend certificaat gebruiken

Als u een zelfondertekend certificaat wilt maken voor gebruik met een afzonderlijke inschrijving, gaat u naar de map waarin u het certificaat wilt maken en voert u de volgende stappen uit:

  1. 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 voor de onderwerpnaam (//CN=my-x509-device) is alleen vereist om de tekenreeks met Git op Windows-platforms te laten ontsnappen.

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

  3. Wanneer u wordt gevraagd Controleren - Voer PEM-wachtwoordzin in: gebruikt u de wachtwoordzin 1234 opnieuw.

    Een openbaar sleutelcertificaatbestand (device-cert.pem) en een persoonlijk sleutelbestand (device-key.pem) moeten nu worden gegenereerd in de map waarin u de openssl opdracht hebt uitgevoerd.

    Voor het certificaatbestand is de algemene naam (CN) van het onderwerp ingesteld op my-x509-device.

    Het bestand met de persoonlijke sleutel wordt beveiligd door de wachtwoordzin: 1234.

  4. Het certificaatbestand is base64-gecodeerd. Voer de volgende opdracht in om de algemene naam van het onderwerp (CN) en andere eigenschappen van het certificaatbestand weer te geven:

    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
    

Een certificaatketen gebruiken

Als u een inschrijvingsgroep gebruikt, moet u zich verifiëren met een certificaatketen. Met een afzonderlijke inschrijving kunt u een certificaatketen of een zelfondertekend certificaat gebruiken.

Volg de instructies in Een X.509-certificaatketen maken om een certificaatketen te maken. U hebt slechts één apparaat nodig voor dit artikel, zodat u kunt stoppen nadat u de persoonlijke sleutel en certificaatketen voor het eerste apparaat hebt gemaakt.

Wanneer u klaar bent, hebt u de volgende bestanden:

Certificaat File Beschrijving
basis-CA-certificaat. certs/azure-iot-test-only.root.ca.cert.pem Wordt geüpload naar DPS en geverifieerd.
tussenliggend CA-certificaat certs/azure-iot-test-only.intermediate.cert.pem Wordt gebruikt om een inschrijvingsgroep te maken in DPS.
device-01 private key private/device-01.key.pem Wordt door het apparaat gebruikt om het eigendom van het apparaatcertificaat te verifiëren tijdens verificatie met DPS.
device-01-certificaat certs/device-01.cert.pem Wordt gebruikt voor het maken van een afzonderlijke inschrijvingsvermelding met DPS.
device-01-certificaat voor volledige keten certs/device-01-full-chain.cert.pem Gepresenteerd door het apparaat om te verifiëren en te registreren bij DPS.

Een afzonderlijke inschrijving gebruiken

Als u een afzonderlijke inschrijving wilt maken voor dit artikel, gebruikt u de opdracht az iot dps enrollment create .

Met de volgende opdracht maakt u een afzonderlijke inschrijvingsvermelding met het standaardtoewijzingsbeleid voor uw DPS-exemplaar met behulp van het apparaatcertificaat dat u opgeeft.

az iot dps enrollment create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --attestation-type x509 --certificate-path {path to your certificate}
  • Vervang de naam van uw resourcegroep en DPS-exemplaar.

  • De inschrijvings-id is de registratie-id voor uw apparaat en moet voor X.509-inschrijvingen overeenkomen met de algemene onderwerpnaam (CN) van het apparaatcertificaat.

  • Het certificaatpad is het pad naar uw apparaatcertificaat.

Notitie

Als u Cloud Shell gebruikt om Azure CLI-opdrachten uit te voeren, kunt u de uploadknop gebruiken om het certificaatbestand te uploaden naar uw cloudstation voordat u de opdracht uitvoert.

Schermopname van de knop Bestand uploaden in Azure Cloud Shell.

Een inschrijvingsgroep gebruiken

Als u een inschrijvingsgroep wilt maken die u voor dit artikel wilt gebruiken, gebruikt u de opdracht az iot dps enrollment-group create .

Met de volgende opdracht maakt u een inschrijvingsgroepvermelding met het standaardtoewijzingsbeleid voor uw DPS-exemplaar met behulp van een tussenliggend CA-certificaat:

az iot dps enrollment-group create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --certificate-path {path_to_your_certificate}
  • Vervang de naam van uw resourcegroep en DPS-exemplaar.

  • De inschrijvings-id is een niet-hoofdlettergevoelige tekenreeks van alfanumerieke tekens plus de speciale tekens: '-', '.', '_', ':'. Het laatste teken moet alfanumeriek of streepje ('-') zijn. Dit kan elke naam zijn die u wilt gebruiken voor de inschrijvingsgroep.

  • Het certificaatpad is het pad naar het tussenliggende certificaat. Als u de instructies in Een certificaatketen gebruiken hebt gevolgd, is de bestandsnaam certs/azure-iot-test-only.intermediate.cert.pem.

Notitie

Als u Cloud Shell gebruikt om Azure CLI-opdrachten uit te voeren, kunt u de uploadknop gebruiken om het certificaatbestand te uploaden naar uw cloudstation voordat u de opdracht uitvoert.

Schermopname van de knop Bestand uploaden in Azure Cloud Shell.

Notitie

Als u wilt, kunt u een inschrijvingsgroep maken op basis van een handtekeningcertificaat dat eerder is geüpload en geverifieerd met DPS (zie de volgende sectie). Hiervoor geeft u de certificaatnaam op met de --ca-name en laat u de --certificate-path parameter weg in de az iot dps enrollment-group create opdracht.

Een handtekeningcertificaat uploaden en verifiëren

Als u een certificaatketen gebruikt voor een afzonderlijke inschrijving of een inschrijvingsgroep, moet u ten minste één certificaat in de ondertekeningsketen van het apparaatcertificaat uploaden en controleren naar DPS.

  • Voor een afzonderlijke inschrijving kan dit elk handtekeningcertificaat in de certificaatketen van het apparaat zijn.

  • Voor een inschrijvingsgroep kan dit het certificaat zijn dat is ingesteld voor de inschrijvingsgroep of een certificaat in de registratieketen tot en met het basis-CA-certificaat.

Gebruik de opdracht az iot dps certificate create om uw certificaat te uploaden en te verifiëren:

az iot dps certificate create -g {resource_group_name} --dps-name {dps_name} --certificate-name {friendly_name_for_your_certificate} --path {path_to_your_certificate} --verified true
  • Vervang de naam van uw resourcegroep en DPS-exemplaar.

  • Het certificaatpad is het pad naar uw handtekeningcertificaat. Voor dit artikel raden we u aan het basis-CA-certificaat te uploaden. Als u de instructies in Een certificaatketen gebruiken hebt gevolgd, is de bestandsnaam certs/azure-iot-test-only.root.ca.cert.pem.

  • De certificaatnaam mag alleen alfanumerieke tekens of de volgende speciale tekens bevatten: -._. Witruimte is niet toegestaan. Bijvoorbeeld 'azure-iot-test-only-root'.

Notitie

Als u Cloud Shell gebruikt om Azure CLI-opdrachten uit te voeren, kunt u de uploadknop gebruiken om het certificaatbestand te uploaden naar uw cloudstation voordat u de opdracht uitvoert.

Schermopname van de knop Bestand uploaden in Azure Cloud Shell.

Notitie

Met de stappen in deze sectie is het certificaat automatisch geverifieerd bij het uploaden. U kunt het certificaat ook handmatig verifiëren. Zie Handmatige verificatie van tussenliggende of basis-CA voor meer informatie.

Uw apparaat registreren

U roept de REGISTER Device REST API aan om uw apparaat in te richten via DPS.

Gebruik de volgende curl-opdracht:

curl -L -i -X PUT --cert [path_to_your_device_cert] --key [path_to_your_device_private_key] -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -d '{"registrationId": "[registration_id]"}' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31

Waar:

  • -L vertelt curl http-omleidingen te volgen.

  • –i vertelt curl protocolheaders op te nemen in de uitvoer. Deze headers zijn niet strikt noodzakelijk, maar ze kunnen wel nuttig zijn.

  • -X PUT vertelt curl dat dit een HTTP PUT-opdracht is. Vereist voor deze API-aanroep.

  • --cert [path_to_your_device_cert] vertelt curl waar het X.509-certificaat van uw apparaat kan worden gevonden. Als de persoonlijke sleutel van uw apparaat wordt beveiligd door een wachtwoordzin, kunt u de wachtwoordzin toevoegen na het certificaatpad, voorafgegaan door een dubbele punt, bijvoorbeeld: --cert my-device.pem:1234.

    • Als u een zelfondertekend certificaat gebruikt, bevat het certificaatbestand van uw apparaat slechts één X.509-certificaat. Als u de instructies in Een zelfondertekend certificaat gebruiken hebt gevolgd, is de bestandsnaam device-cert.pem en de wachtwoordzin voor de persoonlijke sleutel is 1234, dus gebruik --cert device-cert.pem:1234.

    • Als u bijvoorbeeld een certificaatketen gebruikt, moet het certificaatbestand van uw apparaat een geldige certificaatketen bevatten bij de verificatie via een inschrijvingsgroep. De certificaatketen moet het apparaatcertificaat en eventuele ondertekeningscertificaten tot en met een geverifieerd certificaat bevatten. Als u de instructies in Een certificaatketen gebruiken om de certificaatketen te maken hebt gevolgd, is het bestandspad certs/device-01-full-chain.cert.pem, dus gebruik --cert certs/device-01-full-chain.cert.pem.

  • --key [path_to_your_device_private_key] vertelt curl waar de persoonlijke sleutel van uw apparaat kan worden gevonden.

    • Als u de instructies in Een zelfondertekend certificaat gebruiken hebt gevolgd, is de bestandsnaam device-key.pem, dus gebruik --key device-cert.pem:1234.

    • Als u de instructies in Een certificaatketen gebruiken hebt gevolgd, is het sleutelpad certs/device-01-full-chain.cert.pem, dus gebruik --cert certs/device-01-full-chain.cert.pem.

  • -H 'Content-Type: application/json' vertelt DPS dat we JSON-inhoud plaatsen en dat 'application/json' moet zijn

  • -H 'Content-Encoding: utf-8' vertelt DPS de codering die we gebruiken voor de hoofdtekst van het bericht. Instellen op de juiste waarde voor uw besturingssysteem/client; het is echter over het algemeen utf-8.

  • -d '{"registrationId": "[registration_id]"}', is de –d parameter de 'gegevens' of hoofdtekst van het bericht dat we plaatsen. Dit moet JSON zijn, in de vorm van {"registrationId":"[registration_id"}. Houd er rekening mee dat het voor curl tussen enkele aanhalingstekens is gewikkeld; Anders moet u de dubbele aanhalingstekens in de JSON laten ontsnappen. Voor X.509-inschrijving is de registratie-id de algemene onderwerpnaam (CN) van uw apparaatcertificaat.

  • Ten slotte is de laatste parameter de URL waarnaar moet worden post. Voor 'normale' (niet on-premises) DPS, het globale DPS-eindpunt , global.azure-devices-provisioning.net wordt gebruikt: https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31. Houd er rekening mee dat u en [registration_id] moet vervangen door [dps_scope_id] de juiste waarden.

Bijvoorbeeld:

  • Als u de instructies in Een zelfondertekend certificaat gebruiken hebt gevolgd:

    curl -L -i -X PUT --cert device-cert.pem:1234 --key device-key.pem -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -d '{"registrationId": "my-x509-device"}' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-x509-device/register?api-version=2021-06-01
    
  • Als u de instructies in Een certificaatketen gebruiken hebt gevolgd:

    curl -L -i -X PUT --cert certs/device-01-full-chain.cert.pem --key private/device-01.key.pem -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -d '{"registrationId": "device-01"}' https://global.azure-devices-provisioning.net/0ne00111111/registrations/device-01/register?api-version=2021-06-01
    

Een geslaagde aanroep heeft een antwoord dat vergelijkbaar is met het volgende:

HTTP/1.1 202 Accepted
Date: Sat, 27 Aug 2022 17:53:18 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Location: https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-x509-device/register
Retry-After: 3
x-ms-request-id: 05cdec07-c0c7-48f3-b3cd-30cfe27cbe57
Strict-Transport-Security: max-age=31536000; includeSubDomains

{"operationId":"5.506603669bd3e2bf.b3602f8f-76fe-4341-9214-bb6cfb891b8a","status":"assigning"}

Het antwoord bevat een bewerkings-id en een status. In dit geval is de status ingesteld op assigning. DPS-inschrijving is mogelijk een langdurige bewerking, dus deze wordt asynchroon uitgevoerd. Normaal gesproken peilt u naar de status met behulp van de REST API Voor het opzoeken van bewerkingsstatus om te bepalen wanneer uw apparaat is toegewezen of dat er een fout is opgetreden.

De geldige statuswaarden voor DPS zijn:

  • assigned: de retourwaarde van de statusoproep geeft aan aan welke IoT Hub het apparaat is toegewezen.

  • assigning: de bewerking wordt nog steeds uitgevoerd.

  • disabled: de registratierecord is uitgeschakeld in DPS, zodat het apparaat niet kan worden toegewezen.

  • failed: de toewijzing is mislukt. Er wordt een errorCode en errorMessage geretourneerd in een registrationState record in het antwoord om aan te geven wat is mislukt.

  • unassigned

Gebruik de volgende curl-opdracht om de API Voor het opzoeken van de bewerkingsstatus aan te roepen:

curl -L -i -X GET --cert [path_to_your_device_cert] --key [path_to_your_device_private_key] -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/operations/[operation_id]?api-version=2019-03-31

U gebruikt hetzelfde id-bereik, dezelfde registratie-id en hetzelfde certificaat en dezelfde sleutel als in de aanvraag Apparaat registreren . Gebruik de bewerkings-id die is geretourneerd in het antwoord Apparaat registreren .

De volgende opdracht is bijvoorbeeld voor het zelfondertekende certificaat dat is gemaakt in Een zelfondertekend certificaat gebruiken. (U moet het id-bereik en de bewerkings-id wijzigen.)

curl -L -i -X GET --cert ./device-certPUT --cert device-cert.pem:1234 --key device-key.pem -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-x509-device/operations/5.506603669bd3e2bf.b3602f8f-76fe-4341-9214-bb6cfb891b8a?api-version=2021-06-01

In de volgende uitvoer ziet u het antwoord voor een apparaat dat is toegewezen. U ziet dat de status eigenschap is assigned en dat de registrationState.assignedHub eigenschap is ingesteld op de IoT-hub waar het apparaat is ingericht.

HTTP/1.1 200 OK
Date: Sat, 27 Aug 2022 18:10:49 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
x-ms-request-id: 8f211bc5-3ed8-4c8b-9a79-e003e756e9e4
Strict-Transport-Security: max-age=31536000; includeSubDomains

{
   "operationId":"5.506603669bd3e2bf.b3602f8f-76fe-4341-9214-bb6cfb891b8a",
   "status":"assigned",
   "registrationState":{
      "x509":{
         
      },
      "registrationId":"my-x509-device",
      "createdDateTimeUtc":"2022-08-27T17:53:19.5143497Z",
      "assignedHub":"MyExampleHub.azure-devices.net",
      "deviceId":"my-x509-device",
      "status":"assigned",
      "substatus":"initialAssignment",
      "lastUpdatedDateTimeUtc":"2022-08-27T17:53:19.7519141Z",
      "etag":"IjEyMDA4NmYyLTAwMDAtMDMwMC0wMDAwLTYzMGE1YTBmMDAwMCI="
   }
}

Noteer de apparaat-id en de toegewezen IoT-hub. In de volgende sectie gebruikt u deze om een telemetriebericht te verzenden.

Een telemetriebericht verzenden

U roept de IOT HUB REST API voor apparaat-gebeurtenis verzenden aan om telemetrie naar het apparaat te verzenden.

Gebruik de volgende curl-opdracht:

curl -L -i -X POST --cert [path_to_your_device_cert] --key [path_to_your_device_private_key] -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -d '{"temperature": 30}' https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13

Waar:

  • -X POST vertelt curl dat dit een HTTP POST-opdracht is. Vereist voor deze API-aanroep.

  • --cert [path_to_your_device_cert] vertelt curl waar het X.509-certificaat van uw apparaat kan worden gevonden. Als de persoonlijke sleutel van uw apparaat wordt beveiligd door een wachtwoordzin, kunt u de wachtwoordzin toevoegen na het certificaatpad, voorafgegaan door een dubbele punt, bijvoorbeeld: --cert my-device.pem:1234.

    • Als u een zelfondertekend certificaat gebruikt, bevat het certificaatbestand van uw apparaat slechts één X.509-certificaat. Als u de instructies in Een zelfondertekend certificaat gebruiken hebt gevolgd, is de bestandsnaam device-cert.pem en de wachtwoordzin voor de persoonlijke sleutel is 1234, dus gebruik --cert device-cert.pem:1234.

    • Als u een certificaatketen gebruikt, moet het certificaatbestand van uw apparaat een geldige certificaatketen bevatten. Als u de instructies in Een certificaatketen gebruiken om de certificaatketen te maken hebt gevolgd, is het bestandspad certs/device-01-full-chain.cert.pem, dus gebruik --cert certs/device-01-full-chain.cert.pem.

  • --key [path_to_your_device_private_key] vertelt curl waar de persoonlijke sleutel van uw apparaat kan worden gevonden.

    • Als u de instructies in Een zelfondertekend certificaat gebruiken hebt gevolgd, is de bestandsnaam device-key.pem, dus gebruik --key device-cert.pem:1234.

    • Als u de instructies in Een certificaatketen gebruiken hebt gevolgd, is het sleutelpad certs/device-01-full-chain.cert.pem, dus gebruik --cert certs/device-01-full-chain.cert.pem.

  • -H 'Content-Type: application/json'vertelt IoT Hub we JSON-inhoud plaatsen en 'application/json' moeten zijn.

  • -H 'Content-Encoding: utf-8'vertelt IoT Hub de codering die we gebruiken voor de hoofdtekst van het bericht. Instellen op de juiste waarde voor uw besturingssysteem/client; het is echter over het algemeen utf-8.

  • -d '{"temperature": 30}', is de –d parameter de 'gegevens' of hoofdtekst van het bericht dat we plaatsen. Voor dit artikel plaatsen we één temperatuurgegevenspunt. Het inhoudstype is opgegeven als toepassing/json, dus voor deze aanvraag is de hoofdtekst JSON. Houd er rekening mee dat het voor curl tussen enkele aanhalingstekens is gewikkeld; Anders moet u de dubbele aanhalingstekens in de JSON laten ontsnappen.

  • De laatste parameter is de URL waarnaar moet worden geplaatst. Voor de API Apparaat gebeurtenis verzenden is de URL: https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13.

    • Vervang door [assigned_iot_hub_name] de naam van de IoT-hub waaraan uw apparaat is toegewezen.

    • Vervang door [device_id] de apparaat-id die is toegewezen toen u uw apparaat registreerde. Voor apparaten die via inschrijvingsgroepen worden ingericht, is de apparaat-id de registratie-id. Voor afzonderlijke inschrijvingen kunt u desgewenst een apparaat-id opgeven die verschilt van de registratie-id in de inschrijvingsvermelding.

Bijvoorbeeld:

  • Als u de instructies in Een zelfondertekend certificaat gebruiken hebt gevolgd:

    curl -L -i -X POST --cert device-cert.pem:1234 --key device-key.pem -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -d '{"temperature": 30}' https://MyExampleHub.azure-devices.net/devices/my-x509-device/messages/events?api-version=2020-03-13
    
  • Als u de instructies in Een certificaatketen gebruiken hebt gevolgd:

    curl -L -i -X POST --cert certs/device-01-full-chain.cert.pem --key private/device-01.key.pem -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -d '{"temperature": 30}' https://MyExampleHub.azure-devices.net/devices/my-x509-device/messages/events?api-version=2020-03-13
    

Een geslaagde aanroep heeft een antwoord dat vergelijkbaar is met het volgende:

HTTP/1.1 204 No Content
Content-Length: 0
Vary: Origin
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: aa58c075-20d9-4565-8058-de6dc8524f14
Date: Wed, 31 Aug 2022 18:34:44 GMT

Volgende stappen