X.509-tanúsítványok használata HTTPS-en keresztül SDK nélkül
Ebben az útmutatóban x.509-tanúsítványokat használó eszközt fog kiépíteni HTTPS-en keresztül, azure IoT DPS-eszköz SDK használata nélkül. A legtöbb nyelv http-kérések küldéséhez biztosít kódtárakat, de ahelyett, hogy egy adott nyelvre összpontosítanál, ebben a cikkben a cURL parancssori eszköz használatával küldhet és fogadhat HTTPS-en keresztül.
A cikkben leírt lépéseket linuxos vagy Windows rendszerű gépeken is követheti. Ha Linuxos Windows-alrendszer (WSL) vagy Linux rendszerű gépen fut, egy Bash-parancssorban megadhatja a helyi rendszer összes parancsát. Ha Windows rendszeren fut, írja be a helyi rendszer összes parancsát egy GitBash-parancssorba.
A cikkben több elérési út is található a regisztrációs bejegyzés típusától és a használni kívánt X.509-tanúsítvány(ok) típusától függően. Az előfeltételek telepítése után mindenképpen olvassa el az Áttekintést a folytatás előtt.
Előfeltételek
Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
Hajtsa végre az IoT Hub Device Provisioning Service azure portallal való beállításának lépéseit.
Győződjön meg arról, hogy a Gépen telepítve van a Python 3.7 vagy újabb verziója. A Python verzióját futtatva vagy
python3 --version
futtatvapython --version
ellenőrizheti.Ha Windows rendszeren fut, telepítse a Git legújabb verzióját. Győződjön meg arról, hogy a Git hozzá van adva a parancsablakhoz elérhető környezeti változókhoz. Tekintse meg a Software Freedom Conservancy Git-ügyféleszközeit a telepíteni kívánt eszközök legújabb verziójához
git
, amely tartalmazza a Git Basht, a helyi Git-adattárral való interakcióhoz használható parancssori alkalmazást. Windows rendszeren egy GitBash-parancssorban adja meg a helyi rendszer összes parancsát.Azure parancssori felület (CLI). Ebben a cikkben két lehetősége van az Azure CLI-parancsok futtatására:
- Használja az Azure Cloud Shellt, amely egy interaktív rendszerhéj, amely parancssori felületi parancsokat futtat a böngészőben. Ez a beállítás azért ajánlott, mert nem kell semmit telepítenie. Ha először használja a Cloud Shellt, jelentkezzen be az Azure Portalra. Kövesse a Cloud Shell rövid útmutatójának lépéseit a Cloud Shell elindításához és a Bash-környezet kiválasztásához.
- Igény szerint futtassa az Azure CLI-t a helyi gépen. Ha az Azure CLI már telepítve van, futtassa
az upgrade
a parancssori felület és a bővítmények frissítését az aktuális verzióra. Az Azure CLI telepítéséhez lásd az Azure CLI telepítését.
Ha Linux- vagy WSL-környezetben fut, nyisson meg egy Bash-kérést a parancsok helyi futtatásához. Ha Windows-környezetben fut, nyisson meg egy GitBash-parancssort.
Áttekintés
Ebben a cikkben három forgatókönyvet ismertetünk, és a kezdeti lépések mindegyiknél eltérőek lesznek. Ha a következőt szeretné:
Egyéni regisztráción keresztül, önaláírt tanúsítvány használatával történő üzembe helyezéshez kövesse az alábbi szakaszok lépéseit:
- Önaláírt tanúsítvány létrehozása önaláírt tanúsítvány használatával.
- Egyéni regisztrációval hozhat létre egyéni regisztrációt.
Az egyéni regisztráción keresztül tanúsítványlánc használatával történő üzembe helyezéshez kövesse az alábbi szakaszok lépéseit:
- Tanúsítványlánc létrehozása tanúsítványlánc használatával.
- Egyéni regisztrációval hozhat létre egyéni regisztrációt.
- Töltse fel és ellenőrizze az aláíró tanúsítványt a legfelső szintű hitelesítésszolgáltatói tanúsítvány feltöltéséhez és ellenőrzéséhez.
A beléptetési csoporton keresztüli kiépítéshez kövesse az alábbi szakaszok lépéseit:
- Tanúsítványlánc létrehozása tanúsítványlánc használatával.
- Regisztrációs csoport létrehozása regisztrációs csoport használatával.
- Töltse fel és ellenőrizze az aláíró tanúsítványt a legfelső szintű hitelesítésszolgáltatói tanúsítvány feltöltéséhez és ellenőrzéséhez.
Miután elvégezte a választott forgatókönyv lépéseit, folytathatja az eszköz regisztrálását és a telemetriai üzenet küldését.
Eszköztanúsítvány létrehozása
Ebben a cikkben egy X.509-tanúsítványt fog használni a DPS-vel való hitelesítéshez egyéni regisztráció vagy regisztrációs csoport használatával.
Ha egyéni regisztrációt használ, használhat önaláírt X.509-tanúsítványt vagy az eszköztanúsítványból és egy vagy több aláíró tanúsítványból álló tanúsítványláncot . Ha regisztrációs csoportot használ, tanúsítványláncot kell használnia.
Fontos
Az X.509-regisztráció hitelesítéséhez a rendszer az eszköztanúsítvány tulajdonosi köznapi nevét (CN) használja az eszköz regisztrációs azonosítójaként. A regisztrációs azonosító az alfanumerikus karakterek kis- és nagybetűket nem megkülönböztető sztringje, valamint a speciális karakterek: '-'
, '.'
, '_'
, ':'
. Az utolsó karakternek alfanumerikusnak vagy kötőjelnek ('-'
) kell lennie. A DPS legfeljebb 128 karakter hosszú regisztrációs azonosítókat támogat; az X.509-tanúsítványok tulajdonosi köznapi neve azonban legfeljebb 64 karakter hosszúságú lehet. Ha a következő lépésekben módosítja az eszköztanúsítvány tulajdonosának általános nevét, győződjön meg arról, hogy az megfelel ennek a formátumnak.
Önaláírt tanúsítvány használata
Ha önaláírt tanúsítványt szeretne létrehozni egy egyéni regisztrációhoz, lépjen egy olyan könyvtárba, ahol létre szeretné hozni a tanúsítványt, és kövesse az alábbi lépéseket:
Futtassa az alábbi parancsot:
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"
Fontos
A tárgynévhez (
//CN=my-x509-device
) megadott további perjel csak a Gittel való sztring windowsos platformokon való feloldásához szükséges.Amikor a PEM-pass kifejezés megadására kérik: használja a pass kifejezést
1234
.Amikor a rendszer kéri a hitelesítést – Írja be a PEM-pass kifejezést:, használja újra a pass kifejezést
1234
.Most létre kell hozni egy nyilvános kulcsú tanúsítványfájlt (device-cert.pem) és titkos kulcsfájlt (device-key.pem) abban a könyvtárban, ahol a
openssl
parancsot futtatta.A tanúsítványfájl tulajdonosi köznapi neve (CN) a következőre
my-x509-device
van állítva: .A titkos kulcsfájlt a következő jelszó védi:
1234
.A tanúsítványfájl base64 kódolású. A tanúsítványfájl tulajdonosi köznapi nevének (CN) és egyéb tulajdonságainak megtekintéséhez írja be a következő parancsot:
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
Tanúsítványlánc használata
Ha regisztrációs csoportot használ, tanúsítványlánccal kell hitelesítenie magát. Egyéni regisztrációval tanúsítványláncot vagy önaláírt tanúsítványt használhat.
Tanúsítványlánc létrehozásához kövesse az X.509-tanúsítványlánc létrehozása című témakör utasításait. Ehhez a cikkhez csak egy eszközre van szüksége, így az első eszköz titkos kulcsának és tanúsítványláncának létrehozása után leállhat.
Ha végzett, a következő fájlokkal kell rendelkeznie:
Tanúsítvány | Fájl | Leírás |
---|---|---|
legfelső szintű hitelesítésszolgáltatói tanúsítvány. | certs/azure-iot-test-only.root.ca.cert.pem | A rendszer feltölti a DPS-be, és ellenőrzi. |
köztes hitelesítésszolgáltatói tanúsítvány | certs/azure-iot-test-only.intermediate.cert.pem | A rendszer regisztrációs csoportot hoz létre a DPS-ben. |
device-01 titkos kulcs | private/device-01.key.pem | Az eszköz az eszköztanúsítvány tulajdonjogának ellenőrzésére használja a DPS-hitelesítés során. |
device-01 tanúsítvány | certs/device-01.cert.pem | Egyéni regisztrációs bejegyzés létrehozásához használható a DPS-sel. |
device-01 teljes láncú tanúsítvány | certs/device-01-full-chain.cert.pem | Az eszköz a DPS hitelesítéséhez és regisztrálásához mutatja be. |
Egyéni regisztráció használata
A cikkhez használandó egyéni regisztráció létrehozásához használja az az iot dps enrollment create parancsot.
Az alábbi parancs létrehoz egy egyéni regisztrációs bejegyzést a DPS-példány alapértelmezett foglalási szabályzatával a megadott eszköztanúsítvány használatával.
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}
Cserélje le az erőforráscsoport és a DPS-példány nevét.
A regisztrációs azonosító az eszköz regisztrációs azonosítója, és az X.509-regisztrációk esetében meg kell egyeznie az eszköztanúsítvány tulajdonosának köznapi nevével (CN).
Ha követte az Önaláírt tanúsítvány használata című témakör utasításait, a regisztrációs azonosító az én x509-eszközöm.
Ha követte a Tanúsítványlánc használata című témakör utasításait, a regisztrációs azonosító eszköz-01.
A tanúsítvány elérési útja az eszköztanúsítvány elérési útja.
Ha követte az Önaláírt tanúsítvány használata című témakör utasításait, a fájlnév device-cert.pem.
Ha követte a Tanúsítványlánc használata című témakör utasításait, a fájlnév certs/device-01.cert.pem.
Feljegyzés
Ha a Cloud Shellt használja az Azure CLI-parancsok futtatásához, a feltöltés gombbal feltöltheti a tanúsítványfájlt a felhőbeli meghajtóra a parancs futtatása előtt.
Regisztrációs csoport használata
A cikkhez használandó regisztrációs csoport létrehozásához használja az az iot dps enrollment-group create parancsot.
Az alábbi parancs létrehoz egy regisztrációs csoportbejegyzést, amely a DPS-példány alapértelmezett foglalási szabályzatával rendelkezik egy köztes hitelesítésszolgáltatói tanúsítvány használatával:
az iot dps enrollment-group create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --certificate-path {path_to_your_certificate}
Cserélje le az erőforráscsoport és a DPS-példány nevét.
A regisztrációs azonosító egy kis- és nagybetűket nem megkülönböztető sztring, amely alfanumerikus karakterekből és speciális karakterekből áll:
'-'
,'.'
,'_'
,':'
. Az utolsó karakternek alfanumerikusnak vagy kötőjelnek ('-'
) kell lennie. Bármilyen nevet megadhat, amelyet a regisztrációs csoporthoz használ.A tanúsítvány elérési útja a köztes tanúsítvány elérési útja. Ha követte a Tanúsítványlánc használata című témakör utasításait, a fájlnév certs/azure-iot-test-only.intermediate.cert.pem.
Feljegyzés
Ha a Cloud Shellt használja az Azure CLI-parancsok futtatásához, a feltöltés gombbal feltöltheti a tanúsítványfájlt a felhőbeli meghajtóra a parancs futtatása előtt.
Feljegyzés
Tetszés szerint létrehozhat egy regisztrációs csoportot a DPS-vel korábban feltöltött és ellenőrzött aláíró tanúsítvány alapján (lásd a következő szakaszt). Ehhez adja meg a tanúsítvány nevét a parancsban, --ca-name
és hagyja ki a --certificate-path
paramétert az iot dps enrollment-group create
.
Aláíró tanúsítvány feltöltése és ellenőrzése
Ha tanúsítványláncot használ egyéni regisztrációhoz vagy regisztrációs csoporthoz, az eszköztanúsítvány aláírási láncában legalább egy tanúsítványt fel kell töltenie és ellenőriznie kell a DPS-be.
Egyéni regisztráció esetén ez lehet bármely aláíró tanúsítvány az eszköz tanúsítványláncában.
Regisztrációs csoport esetén ez lehet a regisztrációs csoportban beállított tanúsítvány, vagy a regisztrációs láncban lévő bármely tanúsítvány, beleértve a legfelső szintű hitelesítésszolgáltatói tanúsítványt is.
A tanúsítvány feltöltéséhez és ellenőrzéséhez használja az az iot dps tanúsítvány létrehozása parancsot:
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
Cserélje le az erőforráscsoport és a DPS-példány nevét.
A tanúsítvány elérési útja az aláíró tanúsítvány elérési útja. Ebben a cikkben javasoljuk, hogy töltse fel a legfelső szintű hitelesítésszolgáltatói tanúsítványt. Ha követte a Tanúsítványlánc használata című témakör utasításait, a fájlnév a következő: certs/azure-iot-test-only.root.ca.cert.pem.
A tanúsítványnév csak alfanumerikus karaktereket vagy a következő speciális karaktereket tartalmazhat:
-._
. Nincs szabad tér. Például: "azure-iot-test-only-root".
Feljegyzés
Ha a Cloud Shellt használja az Azure CLI-parancsok futtatásához, a feltöltés gombbal feltöltheti a tanúsítványfájlt a felhőbeli meghajtóra a parancs futtatása előtt.
Feljegyzés
Az ebben a szakaszban ismertetett lépések automatikusan ellenőrizték a tanúsítványt a feltöltés során. A tanúsítvány manuális ellenőrzését is elvégezheti. További információ: A köztes vagy a legfelső szintű hitelesítésszolgáltató manuális ellenőrzése.
Eszköz regisztrálása
Meghívja az Eszközregisztrációs REST API-t az eszköz DPS-ben való üzembe helyezéséhez.
Használja a következő curl parancsot:
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
Ahol:
-L
A curl a HTTP-átirányítások követésére utasítja.–i
azt jelzi, hogy a curl protokollfejléceket tartalmaz a kimenetben. Ezek a fejlécek nem feltétlenül szükségesek, de hasznosak lehetnek.-X PUT
a curl azt jelzi, hogy ez egy HTTP PUT parancs. Ehhez az API-híváshoz szükséges.--cert [path_to_your_device_cert]
az eszköz X.509-tanúsítványának megkeresésének helyét a curl jelzi. Ha az eszköz titkos kulcsát egy jelszóval ellátott kifejezés védi, a hitelesítő kifejezést a kettősponttal megelőzött tanúsítványútvonal után is hozzáadhatja, például:--cert my-device.pem:1234
.Ha önaláírt tanúsítványt használ, az eszköztanúsítvány-fájl csak egyetlen X.509-tanúsítványt tartalmaz. Ha követte az Önaláírt tanúsítvány használata című témakör utasításait, a fájlnév device-cert.pem, a titkos kulcs jelének kifejezése
1234
pedig a következő--cert device-cert.pem:1234
:Ha tanúsítványláncot használ, például egy regisztrációs csoporton keresztüli hitelesítéskor, az eszköztanúsítvány-fájlnak érvényes tanúsítványláncot kell tartalmaznia. A tanúsítványláncnak tartalmaznia kell az eszköztanúsítványt, valamint az igazolt tanúsítványt tartalmazó aláíró tanúsítványokat. Ha követte a Tanúsítványlánc használata a tanúsítványlánc létrehozásához című témakör utasításait, akkor a fájlútvonal a certs/device-01-full-chain.cert.pem, ezért használja
--cert certs/device-01-full-chain.cert.pem
.
--key [path_to_your_device_private_key]
jelzi a curlnek, hogy hol keresse meg az eszköz titkos kulcsát.Ha követte az Önaláírt tanúsítvány használata című témakör utasításait, a fájlnév device-key.pem, ezért használja a következőt
--key device-cert.pem:1234
: .Ha követte a Tanúsítványlánc használata című témakör utasításait, a kulcs elérési útja a certs/device-01-full-chain.cert.pem, ezért használja
--cert certs/device-01-full-chain.cert.pem
.
-H 'Content-Type: application/json'
azt jelzi a DPS-nek, hogy JSON-tartalmat teszünk közzé, és "alkalmazásnak/jsonnak" kell lennie-H 'Content-Encoding: utf-8'
jelzi a DPS-nek az üzenet törzséhez használt kódolást. Állítsa be az operációs rendszer/ügyfél megfelelő értékét; azonban általábanutf-8
.-d '{"registrationId": "[registration_id]"}'
, a–d
paraméter a közzétett üzenet "adata" vagy törzse. JSON-nak kell lennie, "{"registrationId":"[registration_id"}" formában. Vegye figyelembe, hogy a curl esetében egyetlen idézőjelbe van csomagolva; ellenkező esetben meg kell szabadulnia a JSON-ban szereplő idézőjelek elől. X.509-regisztráció esetén a regisztrációs azonosító az eszköztanúsítvány közös neve (CN).Végül az utolsó paraméter a közzéteendő URL-cím. A "reguláris" (azaz nem helyszíni) DPS esetében a globális DPS-végpont global.azure-devices-provisioning.net használatos:
https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31
. Vegye figyelembe, hogy a megfelelő értékeket kell lecserélnie[dps_scope_id]
és[registration_id]
használnia.
Példa:
Ha követte az önaláírt tanúsítvány használata című témakör utasításait:
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
Ha követte a Tanúsítványlánc használata című témakör utasításait:
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
A sikeres hívásokra a következőhöz hasonló válasz fog reagálni:
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"}
A válasz egy műveletazonosítót és egy állapotot tartalmaz. Ebben az esetben az állapot a következőre assigning
van állítva: . A DPS-regisztráció valószínűleg egy hosszú ideig futó művelet, ezért aszinkron módon történik. Az állapotot általában az Operation Status Lookup REST API használatával fogja lekérdezni annak megállapításához, hogy mikor lett hozzárendelve az eszköz, vagy hogy hiba történt-e.
A DPS érvényes állapotértékei a következők:
assigned
: az állapothívás visszatérési értéke jelzi, hogy az eszköz melyik IoT Hubhoz lett hozzárendelve.assigning
: a művelet továbbra is fut.disabled
: a regisztrációs rekord le van tiltva a DPS-ben, így az eszköz nem rendelhető hozzá.failed
: a hozzárendelés nem sikerült. A válaszban megjelenik egyerrorCode
registrationState
rekord, amelyerrorMessage
jelzi, hogy mi nem sikerült.unassigned
Az Operation Status Lookup API meghívásához használja a következő curl parancsot:
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
Ugyanazt az azonosítótartományt, regisztrációs azonosítót, tanúsítványt és kulcsot fogja használni, mint az eszközregisztrációs kérelemben. Használja az eszközregisztrálási válaszban visszaadott műveletazonosítót.
Az alábbi parancs például az Önaláírt tanúsítvány használata területen létrehozott önaláírt tanúsítványra érvényes. (Módosítania kell az azonosító hatókörét és műveleti azonosítóját.)
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
Az alábbi kimenet egy sikeresen hozzárendelt eszköz válaszát mutatja. Figyelje meg, hogy a status
tulajdonság az assigned
, és hogy a registrationState.assignedHub
tulajdonság az IoT Hubra van állítva, ahol az eszköz ki lett építve.
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="
}
}
Jegyezze fel az eszközazonosítót és a hozzárendelt IoT Hubot. A következő szakaszban telemetriai üzenetet fog küldeni.
Telemetriai üzenet küldése
Meghívja az IoT Hub Send Device Event REST API-t, hogy telemetriát küldjön az eszközre.
Használja a következő curl parancsot:
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
Ahol:
-X POST
a curl azt jelzi, hogy ez egy HTTP POST parancs. Ehhez az API-híváshoz szükséges.--cert [path_to_your_device_cert]
az eszköz X.509-tanúsítványának megkeresésének helyét a curl jelzi. Ha az eszköz titkos kulcsát egy jelszóval ellátott kifejezés védi, a hitelesítő kifejezést a kettősponttal megelőzött tanúsítványútvonal után is hozzáadhatja, például:--cert my-device.pem:1234
.Ha önaláírt tanúsítványt használ, az eszköztanúsítvány-fájl csak egyetlen X.509-tanúsítványt tartalmaz. Ha követte az Önaláírt tanúsítvány használata című témakör utasításait, a fájlnév device-cert.pem, a titkos kulcs jelének kifejezése
1234
pedig a következő--cert device-cert.pem:1234
:Tanúsítványlánc használata esetén az eszköz tanúsítványfájljának érvényes tanúsítványláncot kell tartalmaznia. Ha követte a Tanúsítványlánc használata a tanúsítványlánc létrehozásához című témakör utasításait, akkor a fájlútvonal a certs/device-01-full-chain.cert.pem, ezért használja
--cert certs/device-01-full-chain.cert.pem
.
--key [path_to_your_device_private_key]
jelzi a curlnek, hogy hol keresse meg az eszköz titkos kulcsát.Ha követte az Önaláírt tanúsítvány használata című témakör utasításait, a fájlnév device-key.pem, ezért használja a következőt
--key device-cert.pem:1234
: .Ha követte a Tanúsítványlánc használata című témakör utasításait, a kulcs elérési útja a certs/device-01-full-chain.cert.pem, ezért használja
--cert certs/device-01-full-chain.cert.pem
.
-H 'Content-Type: application/json'
azt jelzi az IoT Hubnak, hogy JSON-tartalmat teszünk közzé, és "alkalmazásnak/jsonnak" kell lennie.-H 'Content-Encoding: utf-8'
jelzi az IoT Hubnak az üzenet törzséhez használt kódolást. Állítsa be az operációs rendszer/ügyfél megfelelő értékét; azonban általábanutf-8
.-d '{"temperature": 30}'
, a–d
paraméter a közzétett üzenet "adata" vagy törzse. Ebben a cikkben egyetlen hőmérsékleti adatpontot teszünk közzé. A tartalomtípus alkalmazásként/jsonként lett megadva, ezért ebben a kérésben a törzs JSON. Vegye figyelembe, hogy a curl esetében egyetlen idézőjelbe van csomagolva; ellenkező esetben meg kell szabadulnia a JSON-ban szereplő idézőjelek elől.Az utolsó paraméter a közzéteendő URL-cím. A Send Device Event API esetében az URL-cím a következő.
https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13
Cserélje le
[assigned_iot_hub_name]
annak az IoT Hubnak a nevét, amelyhez az eszköz hozzá lett rendelve.Cserélje le
[device_id]
az eszköz regisztrálásakor hozzárendelt eszközazonosítóra. A regisztrációs csoportokon keresztül kiépíteni kívánt eszközök esetében az eszközazonosító lesz a regisztrációs azonosító. Egyéni regisztrációk esetén megadhat egy olyan eszközazonosítót, amely eltér a regisztrációs bejegyzésben szereplő regisztrációs azonosítótól.
Példa:
Ha követte az önaláírt tanúsítvány használata című témakör utasításait:
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
Ha követte a Tanúsítványlánc használata című témakör utasításait:
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
A sikeres hívásokra a következőhöz hasonló válasz fog reagálni:
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
Következő lépések
Az X.509-tanúsítványokkal való igazolásról további információt az X.509 tanúsítványigazolás című témakörben talál.
Az X.509-tanúsítványok feltöltéséről és ellenőrzéséről további információt az ellenőrzött hitelesítésszolgáltatói tanúsítványok konfigurálása című témakörben talál.