次の方法で共有


SDK を使用せずに HTTPS 経由で X.509 証明書を使用する方法

この操作方法に関する記事では、Azure IoT DPS デバイス SDK を使用せずに、HTTPS 経由で X.509 証明書を使用してデバイスをプロビジョニングします。 ほとんどの言語では HTTP 要求を送信するためのライブラリが提供されていますが、この記事では、特定の言語に焦点を当てるのではなく、cURL コマンドライン ツールを使用して HTTPS 経由で送受信します。

この記事の手順は、Linux または Windows マシンで実行できます。 Linux 用 Windows サブシステム (WSL) で実行している場合、または Linux マシンで実行している場合は、Bash プロンプトでローカル システム上のすべてのコマンドを入力できます。 Windows で実行している場合は、GitBash プロンプトでローカル システム上のすべてのコマンドを入力します。

この記事には、使用する登録エントリと X.509 証明書の種類に応じて、複数のパスがあります。 前提条件をインストールしたら、続行する前に、必ず概要をお読みください。

前提条件

  • Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

  • Azure portal での IoT Hub Device Provisioning Service の設定に関するページの手順を完了します。

  • お使いのマシンに Python 3.7 以降がインストールされていることを確認します。 python --version または python3 --version を実行して、使用している Python のバージョンを確認できます。

  • Windows で実行している場合は、最新バージョンの Git をインストールします。 コマンド ウィンドウからアクセスできる環境変数に Git が追加されていることを確認します。 Git Bash (ローカル Git リポジトリとやりとりする際に使用できるコマンドライン アプリ) を含む、インストールする git ツールの最新バージョンについては、Software Freedom Conservancy の Git クライアント ツールに関するページを参照してください。 Windows では、GitBash プロンプトでローカル システム上のすべてのコマンドを入力します。

  • Azure CLI。 この記事で Azure CLI コマンドを実行するには、次の 2 つのオプションがあります。

    • ブラウザーで CLI コマンドを実行する対話型シェルである Azure Cloud Shell を使用します。 何もインストールする必要がないため、このオプションをお勧めします。 Cloud Shell を初めて使用する場合は、Azure portal にサインインします。 Cloud Shell のクイックスタートの手順に従って、Cloud Shell を起動し、Bash 環境を選択します。
    • 必要に応じて、お使いのローカル コンピューターで Azure CLI を実行します。 Azure CLI が既にインストールされている場合は、az upgrade を実行して、CLI と拡張機能を最新バージョンにアップグレードします。 Azure CLI のインストール方法については、「Azure CLI をインストールする」をご覧ください。
  • Linux または WSL 環境で実行している場合は、Bash プロンプトを開いてコマンドをローカルで実行します。 Windows 環境で実行している場合は、GitBash プロンプトを開きます。

概要

この記事では 3 つのシナリオについて説明します。実行する最初の手順はそれぞれ異なります。 目的:

選択したシナリオの手順を完了したら、「デバイスの登録」と「テレメトリ メッセージの送信」に進むことができます。

デバイス証明書を作成する

この記事では、X.509 証明書を使用して、個別登録または登録グループのいずれかを使用して DPS で認証します。

個別登録を使用している場合は、自己署名 X.509 証明書、またはデバイス証明書と 1 つ以上の署名証明書で構成された証明書チェーンを使用できます。 登録グループを使用している場合は、証明書チェーンを使用する必要があります。

重要

X.509 登録認証の場合、デバイス証明書のサブジェクト共通名 (CN) がデバイスの登録 ID として使用されます。 登録 ID は、英数字と特殊文字 ('-''.''_'':') から成る、大文字と小文字が区別されない文字列です。 最後の文字は、英数字またはダッシュ ('-') である必要があります。 DPS では、最大 128 文字の登録 ID がサポートされますが、X.509 証明書のサブジェクト共通名は 64 文字に制限されます。 次の手順でデバイス証明書のサブジェクト共通名を変更する場合は、この形式に準拠していることを確認してください。

自己署名証明書の使用

個別登録で使用する自己署名証明書を作成するには、証明書を作成するディレクトリに移動し、次の手順に従います。

  1. 次のコマンドを実行します。

    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"
    

    重要

    サブジェクト名 (//CN=my-x509-device) に追加されているスラッシュは、Windows プラットフォーム上の Git で文字列をエスケープする場合にのみ必要となります。

  2. PEM のパス フレーズを入力するよう求められたら、パス フレーズ 1234 を使用します。

  3. PEM パス フレーズの確認入力を求められたら、同じパス フレーズ 1234 をもう一度使用します。

    これで、openssl コマンドを実行したディレクトリに、公開キー証明書ファイル (device-cert.pem) と秘密キー ファイル (device-key.pem) が生成されるはずです。

    証明書ファイルのサブジェクト共通名 (CN) は my-x509-device に設定されています。

    秘密キー ファイルがパス フレーズで保護されている: 1234

  4. 証明書ファイルは Base64 でエンコードされます。 証明書ファイルのサブジェクト共通名 (CN) と他のプロパティを表示するには、次のコマンドを入力します。

    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
    

証明書チェーンを使用する

登録グループを使用している場合は、証明書チェーンで認証する必要があります。 個別登録では、証明書チェーンまたは自己署名証明書を使用できます。

証明書チェーンを作成するには、「X.509 証明書チェーンを作成する」の手順に従います。 この記事に必要なデバイスは 1 つだけなので、最初のデバイスの秘密キーと証明書チェーンを作成した後に停止できます。

完了すると、次のファイルが作成されます。

証明書 ファイル 説明
ルート CA 証明書。 certs/azure-iot-test-only.root.ca.cert.pem DPS にアップロードされ、確認されます。
中間 CA 証明書 certs/azure-iot-test-only.intermediate.cert.pem DPS で登録グループを作成するために使用されます。
device-01 秘密キー private/device-01.key.pem DPS での認証中にデバイス証明書の所有権を確認するためにデバイスによって使用されます。
device-01 証明書 certs/device-01.cert.pem DPS を使用して個別登録エントリを作成するために使用されます。
device-01 フル チェーン証明書 certs/device-01-full-chain.cert.pem DPS の認証と登録を行うためにデバイスによって提示されます。

個別登録を使用する

この記事で使用する個別登録を作成するには、az iot dps enrollment create コマンドを使用します。

次のコマンドでは、指定したデバイス証明書を使用して、DPS インスタンスの既定の割り当てポリシーで個別登録エントリを作成します。

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}
  • リソース グループと DPS インスタンスの名前を置き換えます。

  • 登録 ID はデバイスの登録 ID であり、X.509 登録の場合は、デバイス証明書のサブジェクト共通名 (CN) と一致している必要があります。

  • 証明書パスは、デバイス証明書へのパスです。

Note

Cloud Shell を使用して Azure CLI コマンドを実行している場合は、アップロード ボタンを使用して、コマンドを実行する前に証明書ファイルをクラウド ドライブにアップロードできます。

Azure Cloud Shell のファイルのアップロード ボタンを示すスクリーンショット。

登録グループを使用する

この記事で使用する登録グループを作成するには、az iot dps enrollment-group create コマンドを使用します。

次のコマンドでは、中間 CA 証明書を使用して、DPS インスタンスの既定の割り当てポリシーで登録グループ エントリを作成します。

az iot dps enrollment-group create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --certificate-path {path_to_your_certificate}
  • リソース グループと DPS インスタンスの名前を置き換えます。

  • 登録 ID は、英数字と特殊文字 ('-''.''_'':') から成る、大文字と小文字が区別されない文字列です。 最後の文字は、英数字またはダッシュ ('-') である必要があります。 登録グループに使用する任意の名前を指定できます。

  • 証明書パスは、中間証明書へのパスです。 「証明書チェーンの使用」の手順に従った場合、ファイル名は certs/azure-iot-test-only.intermediate.cert.pem です。

Note

Cloud Shell を使用して Azure CLI コマンドを実行している場合は、アップロード ボタンを使用して、コマンドを実行する前に証明書ファイルをクラウド ドライブにアップロードできます。

Azure Cloud Shell のファイルのアップロード ボタンを示すスクリーンショット。

Note

必要に応じて、DPS で以前にアップロードおよび検証された署名証明書に基づいて登録グループを作成できます (次のセクションを参照)。 そのためには、--ca-name で証明書名を指定し、az iot dps enrollment-group create コマンドで --certificate-path パラメーターを省略します。

署名証明書をアップロードして検証する

個別登録または登録グループのいずれかに証明書チェーンを使用している場合は、デバイス証明書の署名チェーン内の少なくとも 1 つの証明書を DPS にアップロードして検証する必要があります。

  • 個別登録の場合は、デバイスの証明書チェーン内の任意の署名証明書を指定できます。

  • 登録グループの場合は、登録グループに設定された証明書、またはルート CA 証明書を含む署名チェーン内の任意の証明書を指定できます。

証明書をアップロードして検証するには、az iot dps certificate create コマンドを使用します。

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
  • リソース グループと DPS インスタンスの名前を置き換えます。

  • 証明書パスは、署名証明書へのパスです。 この記事では、ルート CA 証明書をアップロードすることをお勧めします。 「証明書チェーンの使用」の手順に従った場合、ファイル名は certs/azure-iot-test-only.root.ca.cert.pem です。

  • 証明書名に使用できるのは、英数字または次の特殊文字のみです: -._。 空白は使用できません。 たとえば、"azure-iot-test-only-root" などです。

Note

Cloud Shell を使用して Azure CLI コマンドを実行している場合は、アップロード ボタンを使用して、コマンドを実行する前に証明書ファイルをクラウド ドライブにアップロードできます。

Azure Cloud Shell のファイルのアップロード ボタンを示すスクリーンショット。

Note

このセクションの手順では、アップロード時に証明書を自動的に検証します。 証明書の手動検証を行うこともできます。 詳細については、「中間 CA またはルート CA の手動検証」を参照してください。

デバイスを登録する

デバイスの登録 REST API を呼び出して、DPS を介してデバイスをプロビジョニングします。

次の curl コマンドを使用します。

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

ここで:

  • -L は、HTTP リダイレクトに従うように curl に指示します。

  • –i は、出力にプロトコル ヘッダーを含むように curl に指示します。 これらのヘッダーは厳密には必要ありませんが、役立つ場合があります。

  • -X PUT は、これが HTTP PUT コマンドであることを curl に通知します。 この API 呼び出しに必要です。

  • --cert [path_to_your_device_cert] は、デバイスの X.509 証明書がある場所を curl に通知します。 デバイスの秘密キーがパス フレーズで保護されている場合は、証明書パスの前にコロンを付けて、パス フレーズを追加できます (例: --cert my-device.pem:1234)。

    • 自己署名証明書を使用している場合、デバイス証明書ファイルには 1 つの X.509 証明書のみが含まれます。 「自己署名証明書を使用する」の手順に従った場合、ファイル名は device-cert.pem で、秘密キー パス フレーズは 1234 であるため、--cert device-cert.pem:1234 を使用します。

    • 証明書チェーンを使用している場合 (たとえば、登録グループを介して認証する場合)、デバイス証明書ファイルに有効な証明書チェーンが含まれている必要があります。 証明書チェーンには、デバイス証明書と、検証済み証明書を含む署名証明書が含まれている必要があります。 「証明書チェーンを使用して証明書チェーンを作成する」の手順に従った場合、ファイルパスは certs/device-01-full-chain.cert.pem なので、--cert certs/device-01-full-chain.cert.pem を使用します。

  • --key [path_to_your_device_private_key] は、デバイスの秘密キーのある場所を curl に通知します。

    • 自己署名証明書を使用する」の手順に従った場合、ファイル名は device-key.pem なので、--key device-cert.pem:1234 を使用します。

    • 証明書チェーンを使用する」の手順に従った場合、キー パスは certs/device-01-full-chain.cert.pem なので、--cert certs/device-01-full-chain.cert.pem を使用します。

  • -H 'Content-Type: application/json' は、JSON コンテンツを投稿しており、'application/json' である必要があることを DPS に通知します

  • -H 'Content-Encoding: utf-8' は、メッセージ本文に使用しているエンコードを DPS に通知します。 OS/クライアントの適切な値に設定します。ただし、一般的には utf-8 です。

  • -d '{"registrationId": "[registration_id]"}'–d パラメーターは、投稿するメッセージの 'データ' または本文です。 '{"registrationId":"[registration_id"}' の形式の JSON である必要があります。 curl の場合は、単一引用符で囲まれていることに注意してください。それ以外の場合は、JSON 内の二重引用符をエスケープする必要があります。 X.509 登録の場合、登録 ID はデバイス証明書のサブジェクト共通名 (CN) です。

  • 最後のパラメーターは投稿先の URL です。 "通常" (つまりオンプレミスではない) DPS の場合、グローバル DPS エンドポイント、global.azure-devices-provisioning.net が使用されます: https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31[dps_scope_id][registration_id] を適切な値に置き換える必要があることに注意してください。

次に例を示します。

  • 自己署名証明書を使用する」の手順に従った場合:

    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
    
  • 証明書チェーンを使用する」の手順に従った場合:

    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
    

呼び出しが成功すると、次のような応答が返されます。

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

応答には、操作 ID と状態が含まれています。 この場合、状態は assigning に設定されます。 DPS 登録は、実行時間の長い操作である可能性があるため、非同期的に実行されます。 通常は、操作状態の検索 REST API を使用して状態をポーリングして、デバイスがいつ割り当てられたか、障害が発生したかどうかを判断します。

DPS の有効な状態の値は次のとおりです。

  • assigned: 状態呼び出しからの戻り値は、デバイスが割り当てられた IoT Hub を示します。

  • assigning: 操作はまだ実行中です。

  • disabled: 登録レコードは DPS で無効になっているため、デバイスを割り当てることはできません。

  • failed: ロールの割り当てに失敗しました。 応答で registrationState レコードに errorCodeerrorMessage が返され、何が失敗したかを示します。

  • unassigned

操作状態の検索 API を呼び出すには、次の curl コマンドを使用します。

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

デバイスの登録要求で使用したのと同じ ID スコープ、登録 ID、証明書とキーを使用します。 デバイスの登録応答で返された操作 ID を使用します。

たとえば、次のコマンドは、「自己署名証明書を使用する」で作成された自己署名証明書用です。 (ID スコープと操作 ID を変更する必要があります)。

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

次の出力は、正常に割り当てられたデバイスの応答を示しています。 status プロパティが assigned であり、registrationState.assignedHub プロパティがデバイスがプロビジョニングされた IoT ハブに設定されていることに注意してください。

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="
   }
}

デバイス ID と割り当てられた IoT ハブをメモします。 これらを使用して、次のセクションでテレメトリ メッセージを送信します。

テレメトリ メッセージを送信する

デバイスにテレメトリを送信するには、IoT Hub デバイス イベントの送信 REST API を呼び出します。

次の curl コマンドを使用します。

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

ここで:

  • -X POST は、これが HTTP POST コマンドであることを curl に通知します。 この API 呼び出しに必要です。

  • --cert [path_to_your_device_cert] は、デバイスの X.509 証明書がある場所を curl に通知します。 デバイスの秘密キーがパス フレーズで保護されている場合は、証明書パスの前にコロンを付けて、パス フレーズを追加できます (例: --cert my-device.pem:1234)。

    • 自己署名証明書を使用している場合、デバイス証明書ファイルには 1 つの X.509 証明書のみが含まれます。 「自己署名証明書を使用する」の手順に従った場合、ファイル名は device-cert.pem で、秘密キー パス フレーズは 1234 であるため、--cert device-cert.pem:1234 を使用します。

    • 証明書チェーンを使用している場合は、デバイス証明書ファイルに有効な証明書チェーンが含まれている必要があります。 「証明書チェーンを使用して証明書チェーンを作成する」の手順に従った場合、ファイルパスは certs/device-01-full-chain.cert.pem なので、--cert certs/device-01-full-chain.cert.pem を使用します。

  • --key [path_to_your_device_private_key] は、デバイスの秘密キーのある場所を curl に通知します。

    • 自己署名証明書を使用する」の手順に従った場合、ファイル名は device-key.pem なので、--key device-cert.pem:1234 を使用します。

    • 証明書チェーンを使用する」の手順に従った場合、キー パスは certs/device-01-full-chain.cert.pem なので、--cert certs/device-01-full-chain.cert.pem を使用します。

  • -H 'Content-Type: application/json' は、JSON コンテンツを投稿しており、'application/json' である必要があることを IoT Hub に通知します。

  • -H 'Content-Encoding: utf-8' は、メッセージ本文に使用しているエンコードを IoT Hub に通知します。 OS/クライアントの適切な値に設定します。ただし、一般的には utf-8 です。

  • -d '{"temperature": 30}'–d パラメーターは、投稿するメッセージの 'データ' または本文です。 この記事では、単一の温度データ ポイントを投稿します。 コンテンツの種類が application/json として指定されているため、この要求の本文は JSON です。 curl の場合は、単一引用符で囲まれていることに注意してください。それ以外の場合は、JSON 内の二重引用符をエスケープする必要があります。

  • 最後のパラメーターは投稿先の URL です。 デバイス イベントの送信 API の場合、URL は https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13 です。

    • [assigned_iot_hub_name] を、デバイスが割り当てられた IoT ハブの名前に置き換えます。

    • [device_id] を、デバイスの登録時に割り当てられたデバイス ID に置き換えます。 登録グループを介してプロビジョニングするデバイスの場合、デバイス ID は登録 ID になります。 個別登録では、必要に応じて、登録エントリの登録 ID とは異なるデバイス ID を指定できます。

次に例を示します。

  • 自己署名証明書を使用する」の手順に従った場合:

    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
    
  • 証明書チェーンを使用する」の手順に従った場合:

    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
    

呼び出しが成功すると、次のような応答が返されます。

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

次のステップ