Soracom

Users

ドキュメント
Home ドキュメント SORACOM Beam Microsoft Azure に送信する

Azure IoT Hub と接続する (X.509 CA 証明書を利用した認証)

Beam の MQTT エントリポイントを利用して、Azure IoT Hub (以下、IoT Hub) に複数のデバイスからデータを送信したり、デバイスで IoT Hub からのデータを受信したりできます。

ここでは、データを送受信するデバイスが正規のデバイスであることを保証するために、X.509 CA 証明書を使用したデバイス認証を利用します。X.509 認証の仕組みやデバイス認証の方法について詳しくは、X.509 CA 証明書を使用したデバイス認証 を参照してください。

概要 概要

X.509 CA 証明書とは

「証明書を発行する認証局が信頼できること」を証明するための証明書です。ルート証明書や中間証明書とも呼ばれます。

操作を始める前に準備が必要です (クリックして確認してください)

(1) SORACOM のアカウントを作成して IoT SIM を申し込む / デバイスを購入する

MQTT を使用できるデバイスと、そのデバイスで利用できる IoT SIM を用意します。

例:

SORACOM アカウントの作成方法、IoT SIM の申し込み方法、およびデバイスの購入方法について詳しくは、SORACOM の利用を始める を参照してください。

(2) Microsoft Azure アカウントを用意する

Microsoft Azure Portal にアクセスして、Microsoft Azure アカウントを作成します。

準備完了

ステップ 1: IoT Hub を準備して X.509 CA 証明書および検証証明書を登録する

IoT Hub を準備して、「デバイス証明書に署名する認証局」の X.509 CA 証明書を IoT Hub に登録します。

このステップはデバイスの個数に関わらず 1 回だけ行います。

IoT Hub を準備する

Microsoft Azure Portal にアクセスして、IoT Hub を作成します。詳しくは、Azure Portal を使用して IoT Hub を作成する を参照してください。

なお、以下の項目に設定した内容は、このあとの手順で使用します。設定内容を忘れないでください。

項目説明
[リソースグループ]ステップ 4: Beam を使用して IoT Hub にデータを送信する で指定します。
[IoT Hub 名]このあとの手順で頻繁に入力します。

すでに作成済みの IoT Hub を利用することもできます。

公的なルート証明機関から X.509 CA 証明書を購入する

X.509 CA 証明書を公的なルート証明機関から購入した場合は、その指示に従って設定してください。

独自の X.509 CA 証明書を利用する

動作確認用に限り、独自の X.509 CA 証明書を利用できます

独自の X.509 CA 証明書は、動作確認用にのみ利用してください。 動作確認後、本番環境で利用する場合は、速やかに公的なルート証明機関から X.509 CA 証明書を購入してください。詳しくは、公的なルート証明機関にお問い合わせください。

独自の X.509 CA 証明書を発行する手順については、チュートリアル: OpenSSL を使用してテスト証明書を作成する を参照してください。このページで紹介されている Bash スクリプトで作成したテスト証明書は、固定のパスワード ("1234") が設定されており、30 日後に期限が切れます。なお、作成した証明書をアップロードする手順は以下のとおりです。

証明書説明
X.509 CA 証明書

デバイス証明書に署名する認証局の X.509 CA 証明書です。Microsoft が提供する Bash スクリプトを利用した場合は、手順内で作成されます。このファイルは、以下の手順で IoT Hub にアップロードします。

  1. Microsoft Azure Portal にアクセスし、IoT Hub を準備する で作成した IoT Hub の設定画面で [セキュリティ設定][証明書][+追加] の順にクリックします。

  2. 以下の項目を設定します。

    項目説明
    [証明書名]X.509 CA 証明書を識別するために任意の文字列を入力します。例: Azure-IoT-Hub-CA-Cert-Test-Only
    [.pem または .cer の証明書ファイルです。]X.509 CA 証明書を選択します。Microsoft が提供する Bash スクリプトを利用した場合は、手順内で作成された ./certs/azure-iot-test-only.root.ca.cert.pem です。
  3. [保存] をクリックします。

  4. アップロードしたら、Bash スクリプトの手順に従って検証証明書を作成します。

検証証明書

IoT Hub で生成した確認コードを含み、認証局で署名した証明書です。このファイルは、以下の手順で IoT Hub にアップロードします。

  1. Microsoft Azure Portal にアクセスし、IoT Hub を準備する で作成した IoT Hub の設定画面で [セキュリティ設定][証明書] → X.509 CA 証明書の順にクリックします。
  2. 以下の項目を設定します。
    項目説明
    [.pem または .cer の検証証明書ファイル。]検証証明書を選択します。Bash スクリプトを利用した場合は、手順内で作成された ./certs/verification-code.cert.pem です。
  3. [確認] をクリックします。

コマンドで実施する場合

ステップ 1 の「独自の X.509 CA 証明書を利用する」手順を Bash 環境でコマンドだけで実施するには、以下のコマンドを実行します。

# Azure CLI と拡張機能をインストールする
$ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
$ az extension add --name azure-iot

# Azure CLI でログインする
$ az login

# IoT Hub の作成
# リソースグループ名と IoT Hub 名は適宜指定してください。
$ resource_group_name="resource group name"
$ iot_hub_name="IoT Hub name"
$ az group create --name ${resource_group_name} -l japaneast

# F1 - 無料 (価格) の IoT Hub の作成
$ az iot hub create --resource-group ${resource_group_name} --name ${iot_hub_name} --sku F1 --partition-count 2

# S1 - 標準 (価格) の IoT Hub を作成する場合は、以下のコマンドを実行します。
# az iot hub create --resource-group ${resource_group_name} --name ${iot_hub_name} --sku S1


# 独自の X.509 CA 証明書の作成
$ git clone https://github.com/Azure/azure-iot-sdk-c.git
$ mkdir working
$ cd working
$ cp ../azure-iot-sdk-c/tools/CACertificates/*.cnf .
$ cp ../azure-iot-sdk-c/tools/CACertificates/*.sh .
$ ./certGen.sh create_root_and_intermediate

# X.509 CA 証明書のアップロード
$ cert_name="Azure-IoT-Hub-CA-Cert-Test-Only"
$ az iot hub certificate create --resource-group ${resource_group_name} --hub-name ${iot_hub_name} \
  --name ${cert_name} --path ./certs/azure-iot-test-only.root.ca.cert.pem

# verification code の取得
$ etag=`az iot hub certificate show --hub-name ${iot_hub_name} -n ${cert_name} -o tsv --query etag`
$ verification_code=`az iot hub certificate generate-verification-code --etag ${etag} \
  --hub-name ${iot_hub_name} --name ${cert_name} -o tsv --query properties.verificationCode`

# 検証証明書の作成
$ ./certGen.sh create_verification_certificate ${verification_code}

# etag の再発行、および検証証明書のアップロード
$ etag=`az iot hub certificate show --hub-name ${iot_hub_name} -n ${cert_name} -o tsv --query etag`
$ az iot hub certificate verify --etag ${etag} \
  --hub-name ${iot_hub_name} --name ${cert_name} --path ./certs/verification-code.cert.pem

# 以下のコマンドで true が表示されることを確認します。
$ az iot hub certificate show --hub-name ${iot_hub_name} -n ${cert_name} --query properties.isVerified

ステップ 2: SORACOM Beam を有効化して MQTT エントリポイントを設定する

SORACOM Beam を有効化して、MQTT エントリポイントを設定します。

このステップはデバイスの個数に関わらず 1 回だけ行います。

Beam の設定はグループに対して行います

ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。

  1. SIM グループ画面で [SORACOM Beam 設定] をクリックします。

    SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。

  2. [+設定を追加する][MQTT エントリポイント] の順にクリックします。

  3. 以下の項目を設定します。

    項目説明
    [設定名]MQTT エントリポイントを識別するために任意の文字列を入力します。
    [種別]「Standard MQTT broker」を選択します。(*1)
    [プロトコル]「MQTTS」を選択します。
    [ホスト名]IoT Hub のホスト名を入力します。ホスト名は、IoT Hub の設定画面にアクセスし、[概要] をクリックすると確認できます。例: {IoT Hub 名}.azure-devices.net
    [ポート番号]「8883」を入力します。
    [ユーザ名][ホスト名] に入力したホスト名に、デバイス ID の prefix (例: myDevice-) とプレースホルダー (#{imsi}) を追加した文字列を入力します。例: {IoT Hub 名}.azure-devices.net/myDevice-#{imsi}。(*2)
    [証明書]「ON」にします。
    [認証情報]デバイス ID の prefix (例: myDevice-) にプレースホルダー (#{imsi}) を追加した文字列を入力します。例:myDevice-#{imsi}。(*2)
    • (*1) 「Azure IoT Hub」を選択すると、手順 4 で「Azure IoT Hub 認証情報」が選択されます。この設定では、X.509 CA 証明書を利用できません。
    • (*2) {IoT Hub 名} は、IoT Hub を準備する で作成した IoT Hub の名前を入力します。一方、プレースホルダー (#{imsi}) はそのまま入力します。IMSI を入力しないでください。

  4. [保存] をクリックします。

SIM グループの設定は IoT SIM が所属するグループを切り替えると有効化されます

このページの説明では、IoT SIM が所属するグループを切り替える手順は、ステップ 3: IoT Hub に接続するデバイスとデバイス証明書を作成する で説明しています。これは、グループの切り替えは、IoT SIM を利用するデバイスの数だけ行う必要があるためです。

SORACOM CLI / SORACOM API の場合

ステップ 2 を SORACOM CLI または SORACOM API で実施するには、以下のコマンドを実行します。

SORACOM CLI を利用するには、あらかじめ SORACOM CLI をインストールし、認証情報を保存してください。詳しくは、SORACOM CLI をインストールする を参照してください。

# グループの作成 {#soracom-cli-グループの作成}
$ group_id=`soracom groups create \
--body '{
  "tags": {
    "name": "Group name"
  }
}' | jq -r .groupId`

# MQTT エントリポイントの設定 {#soracom-cli-mqtt-エントリポイントの設定}
# ${iot_hub_name} は、IoT Hub の名前に置き換えてください。 {#soracom-cli-iot_hub_name-はiot-hub-の名前に置き換えてください}
$ soracom groups put-config --group-id ${group_id} --namespace SoracomBeam \
--body '[
  {
    "key": "mqtt://beam.soracom.io:1883",
    "value": {
      "enabled": true,
      "name": "MQTT",
      "addEquipmentHeader": false,
      "addSignature": false,
      "addSubscriberHeader": false,
      "addSimIdHeader": false,
      "addMsisdnHeader": false,
      "customHeaders": {},
      "skipStatusCode": false,
      "username": "${iot_hub_name}.azure-devices.net/myDevice-#{imsi}",
      "version": "201912",
      "useClientCert": true,
      "clientCerts": {
        "default": {
          "$credentialsId": "myDevice-#{imsi}"
        }
      },
      "useGoogleIoT": false,
      "useClientCredentials": false,
      "addDeviceIdHeader": false,
      "destination": "mqtts://${iot_hub_name}.azure-devices.net:8883",
      "replaceTopic": false
    }
  }
]'

SORACOM API を利用するには、API キーと API トークンが必要です。詳しくは、API キーと API トークンの取り扱いについて を参照してください。

# グループの作成 {#soracom-api-グループの作成}
$ group_id=`curl -v -X POST https://api.soracom.io/v1/groups \
-H "X-Soracom-API-Key: $X_SORACOM_API_KEY" \
-H "X-Soracom-Token: $X_SORACOM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "tags": {
    "name": "Group name"
  }
}' | jq -r .groupId`

# MQTT エントリポイントの設定 {#soracom-api-mqtt-エントリポイントの設定}
# ${iot_hub_name} は、IoT Hub の名前に置き換えてください。 {#soracom-api-iot_hub_name-はiot-hub-の名前に置き換えてください}
$ curl -v -X PUT https://api.soracom.io/v1/groups/${group_id}/configuration/SoracomBeam \
-H "X-Soracom-API-Key: $X_SORACOM_API_KEY" \
-H "X-Soracom-Token: $X_SORACOM_TOKEN" \
-H "Content-Type: application/json" \
-d '[
  {
    "key": "mqtt://beam.soracom.io:1883",
    "value": {
      "enabled": true,
      "name": "MQTT",
      "addEquipmentHeader": false,
      "addSignature": false,
      "addSubscriberHeader": false,
      "addSimIdHeader": false,
      "addMsisdnHeader": false,
      "customHeaders": {},
      "skipStatusCode": false,
      "username": "${iot_hub_name}.azure-devices.net/myDevice-#{imsi}",
      "version": "201912",
      "useClientCert": true,
      "clientCerts": {
        "default": {
          "$credentialsId": "myDevice-#{imsi}"
        }
      },
      "useGoogleIoT": false,
      "useClientCredentials": false,
      "addDeviceIdHeader": false,
      "destination": "mqtts://${iot_hub_name}.azure-devices.net:8883",
      "replaceTopic": false
    }
  }
]'

ステップ 3: IoT Hub に接続するデバイスとデバイス証明書を作成する

このステップはデバイスごとに行います。たとえば、IoT Hub に送信するデバイスが 10 台ある場合は、このステップを 10 回繰り返してください。

IoT Hub に接続するデバイスを作成する

  1. Microsoft Azure Portal にアクセスし、IoT Hub を準備する で作成した IoT Hub の設定画面で [デバイス管理][デバイス] をクリックします。

  2. [+デバイスの追加] をクリックします。

  3. 以下の項目を設定します。

    項目説明
    [デバイス ID]IoT Hub でデバイスを区別するための識別子を入力します。1 つの IoT Hub に複数のデバイスを作成する場合は、prefix (例: myDevice-) とデバイスで利用する IoT SIM の IMSI (例: 295012345678901) を連結します (例: myDevice-295012345678901)。なお、IMSI は SIM 管理画面の 一覧表示 で確認できます。
    [認証の種類]「X.509 CA 署名済み」を選択します。
    [このデバイスを IoT ハブに接続する]「有効化」を選択します。

  4. [保存][最新の情報に更新] の順にクリックします。

作成したデバイスの証明書を作成して認証局で認証する

デバイスの証明書を作成して、認証局で認証します。公的なルート証明機関から X.509 CA 証明書を購入した場合は、その指示に従ってデバイス証明書を認証してください。

チュートリアル: Microsoft 提供のスクリプトを使用してテスト証明書を作成する の手順に従って作成した独自の認証局でデバイスを認証する場合は、以下の手順で行います。

証明書には、固定のパスワード ("1234") が設定されています。また、30 日後に期限が切れます。

  1. IoT Hub に作成したデバイスの ID を device_id に代入します。

    $ imsi="295012345678901"
    $ device_id="myDevice-${imsi}"
    
  2. デバイス証明書を発行し、署名要求 (CSR: Certificate Signing Request) を生成します。

    $ ./certGen.sh create_device_certificate ${device_id}
    $ mv ./private/new-device.key.pem ./private/${device_id}.key.pem
    $ mv ./certs/new-device.cert.pem ./certs/${device_id}.cert.pem
    $ openssl req -new -key ./private/${device_id}.key.pem -out ./certs/${device_id}.csr -subj "/CN=${device_id}"
    

    ./certs/myDevice-295012345678901.cert.pem および ./certs/myDevice-295012345678901.csr が作成されます。

  3. 認証局で署名します。

    $ openssl x509 -req -in ./certs/${device_id}.csr \
      -CA ./certs/azure-iot-test-only.root.ca.cert.pem \
      -CAkey ./private/azure-iot-test-only.root.ca.key.pem \
      -CAcreateserial \
      -out ./certs/${device_id}.signed.cert.pem -days 500 -sha256
    

    Enter pass phrase for ./private/azure-iot-test-only.root.ca.key.pem: と表示されます。

  4. 「1234」(certGen.sh で定義されているパスワード) を入力して、Enter キーを押します。

    ./certs/myDevice-295012345678901.signed.cert.pem が作成されます。このファイルが、認証局が発行したデバイス証明書です。

  5. 作成したデバイス証明書の秘密鍵とデバイス証明書を SORACOM ユーザーコンソールの認証情報ストアに登録します。

    認証情報ストアの「認証情報を登録」画面の表示方法については、認証情報を登録する を参照してください。

    認証情報は、以下のように登録します。

    情報説明
    [認証情報 ID]IoT Hub に接続するデバイスを作成する で指定したデバイス ID を入力します。それ以外の文字列を入力するとデータを送受信できません。例: myDevice-295012345678901
    [種別]「X.509 証明書」を選択します。
    [秘密鍵 (key)]デバイス証明書の秘密鍵 (./private/myDevice-295012345678901.key.pem) の内容を貼り付けます。(*1)
    [証明書 (cert)]デバイス証明書 (./certs/myDevice-295012345678901.signed.cert.pem) の内容を貼り付けます。(*1)
    [CA証明局]空欄のままにします。
    • (*1) ファイル名ではなくファイルの内容を貼り付けてください。

  6. IoT SIM が所属するグループを切り替えます。

コマンドで実施する場合

ステップ 3 を Bash 環境でコマンドだけで実施するには、以下のコマンドを実行します。

# デバイスの作成
# デバイス ID は、prefix (例: `myDevice-`) とデバイスで利用する IoT SIM の IMSI (例: `295012345678901`) を連結します
$ imsi="295012345678901"
$ device_id="myDevice-${imsi}"
$ az iot hub device-identity create --hub-name ${iot_hub_name} \
  --device-id ${device_id} --auth-method x509_ca

# デバイス証明書の作成
$ ./certGen.sh create_device_certificate ${device_id}
$ mv ./private/new-device.key.pem ./private/${device_id}.key.pem
$ mv ./certs/new-device.cert.pem ./certs/${device_id}.cert.pem
$ openssl req -new -key ./private/${device_id}.key.pem -out ./certs/${device_id}.csr -subj "/CN=${device_id}"

# デバイス証明書の署名
$ openssl x509 -req -in ./certs/${device_id}.csr \
  -CA ./certs/azure-iot-test-only.root.ca.cert.pem \
  -CAkey ./private/azure-iot-test-only.root.ca.key.pem \
  -CAcreateserial \
  -out ./certs/${device_id}.signed.cert.pem -days 500 -sha256

# Enter pass phrase for ./private/azure-iot-test-only.root.ca.key.pem: と表示されたら
# 「1234」を入力して、Enter キーを押します。

以降の手順は、SORACOM CLI または SORACOM API で実施します。

SORACOM CLI を利用するには、あらかじめ SORACOM CLI をインストールし、認証情報を保存してください。詳しくは、SORACOM CLI をインストールする を参照してください。

# 認証情報ストアへの登録 {#soracom-cli-認証情報ストアへの登録}
$ unset key
$ while read line; do key=${key}`eval "echo $line"`"\n" ;
  done<./private/${device_id}.key.pem
$ unset cert
$ while read line; do cert=${cert}`eval "echo $line"`"\n" ;
  done<./certs/${device_id}.signed.cert.pem
$ echo '{
    "credentials": {
      "key": "'${key}'",
      "cert": "'${cert}'"
    },
    "type": "x509"
  }' > credentials.txt
$ soracom credentials create \
  --credentials-id "${device_id}" \
  --body @credentials.txt

SORACOM API を利用するには、API キーと API トークンが必要です。詳しくは、API キーと API トークンの取り扱いについて を参照してください。

# 認証情報ストアへの登録 {#soracom-api-認証情報ストアへの登録}
$ unset key; while read line
  do
    key=${key}`eval "echo $line"`"\n"
  done<./private/${device_id}.key.pem
$ unset cert; while read line
  do
    cert=${cert}`eval "echo $line"`"\n" ;
  done<./certs/${device_id}.signed.cert.pem
$ echo '{
    "credentials": {
      "key": "'${key}'",
      "cert": "'${cert}'"
    },
    "type": "x509"
  }' > credentials.txt
$ curl -v -X POST https://api.soracom.io/v1/credentials/${device_id} \
  -H "X-Soracom-API-Key: $X_SORACOM_API_KEY" \
  -H "X-Soracom-Token: $X_SORACOM_TOKEN" \
  -H "Content-Type: application/json" \
  -d @credentials.txt

ステップ 4: Beam を使用して IoT Hub にデータを送信する

MQTT クライアントを準備する (デバイスの操作)

ここでは、MQTT クライアントとして mosquitto-clients を利用します。

mosquitto-clients のインストール

mosquitto-clients は、サイト からダウンロードおよびインストールしてください。

なお、Raspberry Pi の場合は、以下のコマンドでインストールできます。

$ sudo apt install mosquitto-clients

送信データを確認するツールを準備する (PC の操作)

送信されたデータを確認する

デバイスから送信されたデータは、以下のようなツールで確認できます。

ここでは、PC に Azure CLIAzure CLI 向けの IoT 拡張機能 (Microsoft Azure IoT extension for Azure CLI) をインストールして、デバイスから送信したメッセージをモニターできます。

デバイスから送信したメッセージをモニターするコマンドは以下のとおりです。

$ az login
$ az iot hub monitor-events -g ${resource_group_name} -n ${iot_hub_name}
Starting event monitor, use ctrl-c to stop...

デバイスからデータを送信する (デバイスの操作)

デバイスから IoT Hub にデータを送信します。

デバイスからのデータは、devices/${device_id}/messages/events/ というトピックに Publish します。また、MQTT のクライアント ID (-i オプション) として、IoT Hub に作成したデバイスのデバイス ID を指定します。

なお、以下のコマンドの例では、device_id に、IoT Hub に接続するデバイスを作成する で IoT Hub に作成したデバイスの ID (例: myDevice-295012345678901) を代入すると、上記のとおりにデバイス ID が指定されます。

$ device_id="myDevice-295012345678901"
$ mosquitto_pub -d -h beam.soracom.io -V mqttv311 \
-i ${device_id} -t "devices/${device_id}/messages/events/" \
-m "Hello from Device via Beam!" -q 1
Client myDevice-295012345678901 sending CONNECT
Client myDevice-295012345678901 received CONNACK (0)
Client myDevice-295012345678901 sending PUBLISH (d0, q0, r0, m1, 'devices/myDevice-295012345678901/messages/events/', ... (27 bytes))
Client myDevice-295012345678901 sending DISCONNECT

Azure IoT extension for Azure CLI 側で以下のように表示されることが確認できます。

{
  "event": {
    "origin": "myDevice-295050912391841",
    "module": "",
    "interface": "",
    "component": "",
    "payload": "Hello from Device via Beam!"
  }
}

ステップ 5: IoT Hub からのデータを受信する

次に、IoT Hub からデータを送信し、デバイスで受信します。

受信したデータを確認するツールを準備する

IoT Hub からのデータを受信するには、devices/デバイス ID/messages/devicebound/# というトピックを Subscribe します。また、MQTT のクライアント ID (-i オプション) として、IoT Hub に作成したデバイスのデバイス ID を指定します。

なお、以下のコマンドの例では、device_id に、IoT Hub に接続するデバイスを作成する で IoT Hub に作成したデバイスの ID (例: myDevice-295012345678901) を代入すると、上記のとおりにデバイス ID が指定されます。

$ device_id="myDevice-295012345678901"
$ mosquitto_sub -d -h beam.soracom.io -V mqttv311 \
-i ${device_id} -t "devices/${device_id}/messages/devicebound/#"
Client myDevice-295012345678901 sending CONNECT
Client myDevice-295012345678901 received CONNACK (0)
Client myDevice-295012345678901 sending SUBSCRIBE (Mid: 1, Topic: devices/myDevice-295012345678901/messages/devicebound/#, QoS: 0)
Client myDevice-295012345678901 received SUBACK
Subscribed (mid: 1): 0

IoT Hub からデータを送信する

  1. Microsoft Azure Portal にアクセスし、IoT Hub を準備する で作成した IoT Hub の設定画面で [デバイス管理][デバイス] をクリックします。

  2. デバイス ID をクリックして、[デバイスへのメッセージ] をクリックします。

  3. [メッセージの本文] に「Hello from Azure Portal!」を入力して、[メッセージの送信] をクリックします。

    デバイスにメッセージが届き、以下のように表示されます。

    Client myDevice-295012345678901 received PUBLISH (d0, q0, r0, m0, 'devices/myDevice-295012345678901/messages/devicebound/%24.to=%2Fdevices%2FmyDevice-295012345678901%2Fmessages%2FdeviceBound&%24.ct=text%2Fplain%3B%20charset%3DUTF-8&%24.ce=utf-8', ... (24 bytes))
    Hello from Azure Portal!
    

(参考) Beam を使用せずに直接 IoT Hub と接続する

Beam を使用してデータの送受信ができない場合は、IoT Hub に直接データを送信できることを確認します。

  1. 以下のファイルをデバイスにコピーします。

    • IoT Hub のルート証明書 (DigiCert Global Root G2)。/etc/ssl/certs/DigiCert_Global_Root_G2.pem に保存されていることを確認してください。デバイスに保存されていない場合は DigiCert Global Root G2 からダウンロードできます。
    • デバイス証明書の秘密鍵 (./private/myDevice-295012345678901.key.pem)
    • デバイス証明書 (./certs/myDevice-295012345678901.signed.cert.pem)
  2. IoT Hub に直接データを送信します。

    なお、device_id には、IoT Hub に接続するデバイスを作成する で IoT Hub に作成したデバイスの ID (例: myDevice-295012345678901) を代入します。

    $ iot_hub_name="IoT Hub name"
    $ device_id="myDevice-295012345678901"
    $ mosquitto_pub -d -h ${iot_hub_name}.azure-devices.net -p 8883 \
      --cafile /etc/ssl/certs/DigiCert_Global_Root_G2.pem \
      --key ./private/${device_id}.key.pem --cert ./certs/${device_id}.signed.cert.pem \
      -i ${device_id} -u "${iot_hub_name}.azure-devices.net/${device_id}" \
      -t "devices/${device_id}/messages/events/" \
      -m '{"message": "Hello IoT Hub from Device!"}' -V mqttv311 -q 1
    
Beam を使用するとデバイスから送信するデータ量も削減できます

Beam を使用する場合は、デバイスからルート証明書およびデバイス証明書を送信しないため、送信データ量が削減できます。