IoT Hub の設定

0. はじめに

IoT Hub の設定には、次の3つの作業があります。

  1. IoT Hub リソースの作成
    Azure PortalにてIoT Hub リソースを作成します。
  2. X.509 CA 証明書の準備
    Windows PC でX.509 CA 証明書を作成し、IoT Hubに登録します。
  3. デバイスの登録Azure IoT エクスプローラーを用いてIoT Hubにデバイスを登録します。
info

Azure IoT Hub を使用するためには、Azure Portalのアカウント並びにAzure サブスクリプションの取得が必要となります。

1. IoT Hub リソースの作成

Azure PortalにてIoT Hub リソースを作成します。

1-1. IoT ハブ画面へのアクセス

IoT Hub リソースを作成するIoTハブ画面へのアクセス方法を説明します。

Azure Portal にサインインしポータルサイト画面を表示させます。

Azure portal

ポータルサイト画面左上のリソースの作成アイコンをクリックしリソース作成画面を表示させます。

リソース作成画面の サービスとマーケットプレスを検索してください。 フィールドに"iot hub"と入力します。

Marketplace画面が表示されます。

Marketplace画面のIoT HubアイコンをクリックしIoT Hub画面を表示します。

IoT Hub画面のプランにてIoT Hubを選択し作成ボタンをクリックするとIoTハブ⇒基本タブが表示されます。

1-2. IoTハブ⇒基本 タブにおける設定

IoTハブ⇒基本タブにて以下の設定を行います。

基本

  1. サブスクリプションフィールドで使用するサブスクリプションを選択します。
    チュートリアルではMicrosoft Azure エンタープライズとしていますが、プルダウンメニューに表示される選択肢の中から適当なものを選択して下さい。
  2. リソースグループフィールドで使用するリソース グループを選択します。
    プルダウンメニューから既存のリソース グループを選択するか新規作成をクリックして新規にリソース グループを作成します。
    チュートリアルでは、リソース グループtryResourceGroupを新規に作成しています。
  3. IoT Hub 名フィールドには、お好みの文字列を入力して下さい。
    チュートリアルでは、ph-fx1 としています。
  4. 領域フィールドでは、ハブを配置するリージョンをプルダウンメニューから選択します。ユーザーに最も近い場所を選択します。
    チュートリアルでは、Japan Eastを選択しています。
  5. 設定を終えたら次へ: ネットワーク >をクリックします。IoTハブ⇒ネットワークタブが表示されます。

ここで、設定する IoT Hub 名ph-fx1は、以降の説明でタブやペインを示す名詞として登場します。

1-3. IoTハブ⇒ネットワーク タブにおける設定

IoTハブ⇒ネットワークタブにて以下の設定を行います。

ネットワーク

  1. 接続の構成フィールドでパブリック エンドポイント(すべてのネットワーク)を選択します。
  2. 設定を終えたら次へ: 管理 >をクリックします。IoTハブ⇒管理タブが表示されます。

1-4. IoTハブ⇒管理 タブにおける設定

IoTハブ⇒管理タブにて以下の設定を行います。

サイズとスケール

IoTハブ⇒管理 タブの設定項目

  1. 価格とスケールティアでは、価格とスケールティアを選択します。
    チュートリアルでは(実運用ではないため)、Free レベルを選択しています。
    ここで、Free レベルは1つのサブスクリプションに対し1つに制限されているにも関わらず、2つめの選択を行ってもデプロイは正常に完了できてしまう点に注意して下さい。 Free レベルを複数選択した場合、組み込みエンドポイントの構成が正しく行われず Azure IoT エクスプローラーによるテレメトリーのモニタリングができないなどの問題が生じます。
  2. ロールベースのアクセス制御共有アクセス ポリシー + RBACを選択します。
  3. Device-to-cloud パーティションは、デフォルト値の 2 のままです。
  4. 設定を終えたら次へ: タグ >をクリックします。IoTハブ⇒タグタブが表示されます。

1-5. IoTハブ⇒タグ タブにおける設定

チュートリアルにおいてIoTハブ⇒タグタブでの設定事項はありません。

タグ

次へ: 確認および作成 >をクリックします。IoTハブ⇒確認および作成タブが表示されます。

1-6. IoTハブ⇒確認および作成 タブにおける確認

IoTハブ⇒確認および作成タブにて、設定内容を確認します。

check

確認を終えたら、作成をクリックし新しいハブを作成します。デプロイが完了するまで、数分かかります。

1-7. デプロイの完了

デプロイが完了すると次のように表示されます。

check

2. X.509 CA 証明書の準備

IoT Hub には、デバイスが IoT Hub に接続するための認証に、対称キーを用いる方式とX.509 CA 証明書を用いる方式があります。

一般的にセキュリティの強度は、対称キーを用いる方式よりもX.509 CA 証明書を用いる方式の方が高いとされていますが、その反面X.509 CA 証明書を用いる方式では、 予めX.509 CA 証明書を作成し IoT Hub に登録しておく必要があります。
また、接続するデバイスの数だけX.509 CA 証明書で署名したデバイス証明書とそのプライベートキーを用意しておく必要があります。

ここでは、X.509 CA 証明書の作成と IoT Hubへの登録、並びにデバイス証明書プライベートキーの作成について説明します。
対称キーを使用する場合は、3. デバイスの登録に進んで下さい。

証明書を用いる接続認証には次の証明書とプライベートキーが必要となります。

  • X.509ルート証明書
  • X.509 CA 証明書
  • デバイス証明書(接続するデバイス毎)
  • デバイス証明書のプライベートキー(接続するデバイス毎)

2-1. X.509 ルート証明書の取得

BaltimoreCyberTrustRoot ルート証明書をダウンロードし適当なディレクトリに保存して下さい。
チュートリアルでは、C:\Users\user\Downloads\BaltimoreCyberTrustRoot.crt.pem として保存するものとします。

  • BaltimoreCyberTrustRoot.crt.pem

Azure におけるX.509 ルート証明書(TLS 証明書)の詳細についてはAzure 証明機関の詳細をご覧下さい。

Azure TLS 証明書の変更について

Microsoft社では、X.509ルート証明書ルート証明書あるいはTLS証明書と呼んでいますが、 Azure TLS 証明書の変更について にてアナウンスされている通り、2020年7月よりTLS証明書の変更が進められており、IoT HubについてはAzure IoT TLS: Critical changes are almost here!に記載されている通り2023年2月15日から2023年9月頃の予定で BaltimoreCyberTrustRoot ルート証明書から DigiCert Global Root G2 ルート証明書への移行が進められます。

移行期間中は、次の様にBaltimoreCyberTrustRoot ルート証明書DigiCert Global Root G2 ルート証明書を併記したファイルを適当な名前で保存し、これをBaltimoreCyberTrustRoot ルート証明書に代えて使用して下さい。

-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ
RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD
VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX
DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y
ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy
VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr
mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr
IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK
mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu
XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy
dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye
jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1
BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3
DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92
9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0
Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz
ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS
R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI
2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx
1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ
q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz
tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ
vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP
BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV
5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY
1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4
NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG
Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91
8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe
pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
MrY=
-----END CERTIFICATE-----

なお、移行期間終了後はBaltimoreCyberTrustRoot ルート証明書に代えてDigiCert Global Root G2 ルート証明書を使用して下さい。

2-2. X.509 CA 証明書の作成

Microsoft 提供のスクリプトを使用してテスト証明書を作成する に基づき、 Windows PC の PowerShell 上でX.509 CA 証明書とデバイス証明書、デバイス証明書のプライベートキーを作成します。

2-2-1. OpenSSL のインストール

X.509 証明書の作成には、OpenSSLが必要となります。
証明書を作成する Windows PC に OpenSSL がインストールされていない場合は、 wiki(Binaries)に示される適当なサイト(Binary Distributions)から Windows PC 用の適当なバイナリパッケージを入手しインストールして下さい。
(例えば、Shining Light ProductionsWin64 OpenSSL v1.1.1q Light)

PowerShellから使用するためには、Path 環境変数の設定が必要となります。
PCのシステム⇒システムの詳細設定⇒環境変数(N)タブのシステム環境変数(S)ペインからPath 環境変数に OpenSSLがインストールされたパス(C:\OpenSSL-Win64\bin等)を設定して下さい。

また、OpenSSL を使用するためには、OpenSSLの設定ファイル(openssl.cnf)が必要となります。
openssl.cnf が置かれるフォルダ(パス名)はバイナリーパッケージによって異なり、パッケージに含まれていない場合もあります。
パッケージに含まれていない場合は、このファイルをダウンロードし、C:\OpenSSL-Win64\openssl.cnf 等にコピーして置いて下さい。
openssl.cnf のパス名(インストール先)は、2-2-3項で環境変数 OPENSSL_CONF に設定しますので確認しておいて下さい。

なお、openssl.cnf は証明書を作成する際のデフォルト値などが記載されています。
実運用で使用する際には166~191行目前後に記載されている次のパラメタを予め運用に即した値に変更しておくと便利です。

変更すべきパラメタ
  • countryName
  • stateOrProvinceName
  • localityName
  • 0.organizationName
  • organizationalUnitName
  • emailAddress
openssl.cnf の166~191行目
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = AU
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Some-State
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Internet Widgits Pty Ltd
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = World Wide Web Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default =
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64

2-2-2. 作業用ディレクトの作成

OpenSSL のインストールが完了したら、PowerShell を管理者権限で立ち上げ作業用ディレクトリを作成します。

PS C:\Users\user> mkdir iothub-cert
PS C:\Users\user> cd iothub-cert

2-2-3. 環境変数 OPENSSL_CONF の設定

OpenSSL の設定ファイルのパス名を環境変数に設定します。

PS C:\Users\user\iothub-cert> $env:OPENSSL_CONF="C:\OpenSSL-Win64\openssl.cnf"

パス名は、インストールしたパッケージによって異なりますので注意して下さい。

2-2-4. ca-certs.ps1 スクリプトの入手

https://github.com/Azure/azure-iot-sdk-c/blob/main/tools/CACertificates/ より次のPoewrShellスクリプトを入手し、作成した作業ディレクトリに置きます。

Copy raw contentsアイコンをクリックしてクリックボードにコピーし、メモ帳(notepad.exe)等にペーストすると良いでしょう。

2-2-5. スクリプトの実行を許可

PowerShellでスクリプトの実行を許可するため次のコマンドを実行します。

PS C:\Users\user> Set-ExecutionPolicy -ExecutionPolicy Unrestricted

2-2-6. ca-certs.ps1 スクリプトの実行 (証明書作成ファンクションのロード)

ca-certs.ps1 スクリプトを実行し、証明書を作成するためのファンクションをロードします。

PS C:\Users\user\iothub-cert> . .\ca-certs.ps1
警告: This script is provided for prototyping only.
警告: DO NOT USE CERTIFICATES FROM THIS SCRIPT FOR PRODUCTION!

警告メッセージにある通り、このスクリプトで作成される証明書は試験用のものです。 実運用には、使用しないで下さい。

実運用に用いる証明書を作成する場合は、2-2-1項目に示すopenssl.cnfの166~191行目と以下に示すca-certs.ps1 の15~18行目にある次のパラメタを変更して下さい。

変更すべきパラメタ
  • $_rootCertCommonName
  • $_intermediateCertCommonName
ca-certs.ps1 の15~18行目
$_rootCertCommonName = "Azure IoT CA TestOnly Root CA"
$_rootCertSubject = "CN=$_rootCertCommonName"
$_intermediateCertCommonName = "Azure IoT CA TestOnly Intermediate {0} CA"
$_intermediateCertSubject = "CN=$_intermediateCertCommonName"

2-2-7. Test-CACertsPrerequisites ファンクションの実行 (証明書作成環境の確認)

ca-certs.ps1 スクリプトの実行により読み込まれた Test-CACertsPrerequisites ファンクションを実行し、証明書を作成する環境が整っているか確認します。

PS C:\Users\user\iothub-cert> Test-CACertsPrerequisites
Testing if any test certificates have already been installed...
Ok.
Testing if openssl.exe is set in PATH...
Ok.
Testing if environment variable OPENSSL_CONF is set...
Ok.
Success

証明書を作成する環境か正常に準備されていれば、上記のように表示されます。

Test-CACertNotInstalledAlready : のエラーが返る場合は、PowerShellにcertlm(または、スタートメニューからcertlm.msc)と入力し ローカルコンピュータの証明書ストアを開き、個人⇒証明書信頼されたルート証明機関⇒証明書中間証明期間⇒証明書 の各ペインから、Azure IoT CA TestOnly Root CA と表記される証明書を削除します。
なお、certlm とは別に証明書・現在のユーザーストアを管理するcertmgrというツールがありますが、個人⇒証明書ペインにAzure IoT CA TestOnly Root CAの証明書が表示されず、削除することができませんので注意して下さい。

その他のエラーメッセージが返される場合は、ここまでに手順を見直して下さい。

2-2-8. New-CACertsCertChain ファンクションの実行(X.509 CA 証明書の作成)

ca-certs.ps1 スクリプトの実行により読み込まれたNew-CACertsCertChainファンクションを実行しX.509 CA 証明書を作成します。
ここで、New-CACertsCertChainファンクションのコマンドライン引数としてeccを与えて下さい。

PS C:\Users\user\iothub-cert> New-CACertsCertChain ecc
Beginning to install certificate chain to your LocalMachine\My store
Testing if any test certificates have already been installed...
Ok.
警告: Generating certificate CN=Azure IoT CA TestOnly Root CA which is for prototyping, NOT PRODUCTION. It has a hard-coded password and will expire in 30 days.
:
以下省略

New-CACertsCertChain ファンクションの実行により作業用ディレクトリには次の6つのファイルが作成されます。

  • algorithmUsed.txt
  • Intermediate1.pem
  • Intermediate2.pem
  • Intermediate3.pem
  • RootCA.cer
  • RootCA.pem (X.509 CA 証明書)

ここで作成されるファイルの名称はRootCA.pemですが、X.509 ルート証明書ではなくX.509 CA 証明書である点に注意して下さい。

2-3. X.509 CA 証明書の登録

作成した X.509 CA 証明書を IoT ハブに登録します。

2-3-1. ph-fx1 | 証明書 画面へのアクセス

IoTハブにX.509 CA 証明書を登録する作成する証明書画面へのアクセス方法を説明します。

Azure Portalへサインインするか、画面左上のホームをクリックしてポータルサイト画面を表示させます。

Azure portal

ポータルサイト画面のリソース一覧のph-fx1アイコンをクリックします。
ここで、ph-fx1は、1-2項目で設定したIoT Hub名です。

ph-fx1-1

ph-fx1画面が表示されます。

ph-fx1-1

ph-fx1画面左のメニューバーを下にスクロールしセキュリティ設定ペインの証明書をクリックします。

ph-fx1-1

ph-fx1 | 証明書画面が表示されます。

2-3-1. X.509 CA 証明書の登録

ph-fx1 | 証明書画面にてph-fx1⇒ph-fx1画面左の +追加 をクリックします。
証明書の追加画面がポップアップされます。

ph-fx1-1

  1. 証明書名フィールドには、同一ハブ内で重複しない適当な文字列を入力して下さい。
    チュートリアルではpf-fx1-RootCAとしています。
  2. .pemまたは.cerフィールドでは、2-2-8項で作成した C:\Users\user\iothub-cert\RootCA.pem を選択しアップロードします。
  3. アップロード時に証明書の状態を確認済みに設定する。チェックボックスは、未チェツクのままとします。
  4. 設定を終えたら保存をクリックします。

ph-fx1-1

ph-fx1 | 証明書画面に追加した証明書名pf-fx1-RootCAが表示されます。
ここの段階では状態未検証となっています。

2-4. X.509 CA 証明書の検証

アップロードした X.509 CA 証明書の検証を行います。

検証作業は次の流れとなります。

  1. 証明書 ph-fx1-RootCA画面で確認コードを作成します。
  2. 作成した確認コードを用いPowerShellにて検証証明書verifyCert4.cerを作成します。
  3. 作成したverifyCert4.cer証明書 ph-fx1-RootCAにアップロードし検証を行います。

2-4-1. 確認コードの作成

証明書 ph-fx1-RootCA画面で確認コードを作成します。

ph-fx1 | 証明書画面にてpf-fx1-RootCAをクリックします。

ph-fx1-1

証明書 f-fx1-RootCA画面がポップアップされます。

確認コード作成するをクリックすると確認コードが作成されます。

ph-fx1-1

確認コードクリックボートにコピーするアイコンをクリックし確認コードをクリックボートにコピーします。

2-4-2. 検証証明書 verifyCert4.cer の作成

クリックボートにコピーした確認コードを用いて検証証明書verifyCert4.cerを作成します。
2-2-8項のPowerShellにて確認コードを引き数としてNew-CACertsVerificationCertファンクションを実行します。 検証証明書verifyCert4.cerを作成します。

PS C:\Users\user\iothub-cert> New-CACertsVerificationCert 01EEBFA3CA174DF5D255C74D1109C5D1FA89136613E91DA4
Using Signing Cert:::
[Subject]
CN=Azure IoT CA TestOnly Root CA
[Issuer]
CN=Azure IoT CA TestOnly Root CA
[Serial Number]
139F7231154D4E8940C5462877702F36
[Not Before]
2022/09/27 7:49:30
[Not After]
2022/10/27 7:59:31
[Thumbprint]
D8376D3AE6D25D187AB870631C537D721AB4083A
警告: Generating certificate CN=F441244B68C718CE3794A30BA75D10076012574461E4C70B which is for prototyping, NOT
PRODUCTION. It has a hard-coded password and will expire in 30 days.

検証証明書verifyCert4.cerが作成されます。

2-4-3. 検証証明書 verifyCert4.cer による検証

作成したverifyCert4.cer証明書 ph-fx1-RootCAにアップロードし検証を行います。
証明書 ph-fx1-RootCA画面の .pemまたは.cerの検証証明書にて C:\Users\user\iothub-cert\ をverifyCert4.cer 選択しアップロードします。

ph-fx1-1

確認をクリックするとX.509 CA証明書の検証が行われます。

ph-fx1-1

検証が完了すると証明書 ph-fx1-RootCA画面が閉じ、 ph-fx1 | 証明書画面のph-fx1-RootCA状態確認済みとなります。

3. デバイスの登録

Azure IoT エクスプローラーを用いてIoT Hubにデバイスを登録します。
ここでは、次の3つの作業を行います。

  1. Azure IoT エクスプローラーを Windows PC にインストールします。
  2. Azure IoT エクスプローラーが IoT Hub (ph-fx1)に接続するために必要となる接続文字列を取得します。
  3. デバイスの登録を行います。対称キーを用いる場合とX.509 CA 証明書を用いる場合で手順が異なります。

3-1. Azure IoT エクスプローラーのインストール

Azure IoT エクスプローラーを Windows PC にインストールします。

https://github.com/Azure/azure-iot-explorer/releases から、最新バージョンをダウンロードしインストールします。

iot-explorer-release

  1. Azure.IoT.Explorer.Preview-0.15.0.msiをクリックしダウンロードします。
  2. ダウンロードしたAzure.IoT.Explorer.Preview-0.15.0.msiファイルをダブルクリックしインストールします。

3-2. 接続文字列の取得

Azure IoT エクスプローラーが IoT Hub (ph-fx1)に接続するために必要となる接続文字列を取得します。

3-2-1. ph-fx1 | 共有アクセス ポリシー 画面へのアクセス

接続文字列を取得する共有アクセス ポリシー画面へのアクセス方法を説明します。

Azure Portalへサインインするか、画面左上のホームをクリックしてポータルサイト画面を表示させます。

Azure portal

ポータルサイト画面のリソース一覧のph-fx1アイコンをクリックします。
ここで、ph-fx1は、1-2項で設定したIoT Hub名です。

ph-fx1-1

ph-fx1画面が表示されます。

ph-fx1-1

ph-fx1画面左のメニューバーを下にスクロールしセキュリティ設定ペインの共有アクセス ポリシーをクリックします。

ph-fx1-1

ph-fx1 | 共有アクセス ポリシー画面が表示されます。

3-2-2. 接続文字列の取得

ph-fx1 | 共有アクセス ポリシー画面の共有アクセス ポリシーの管理ペインのiothubowner をクリックします。
iothubowner画面がポップアップされます。

共有アクセス ポリシー

プライマリ接続文字列クリックボートにコピーするアイコンをクリックしプライマリ接続文字列をクリックボートにコピーします。

3-3. デバイスの登録

Azure IoT エクスプローラーを起動しデバイスを登録します。

3-3-1. Azure IoT エクスプローラーの起動

Azure IoT エクスプローラーを起動します。
Windows PC のスタートメニュー⇒すべてのアプリ⇒Azure IoT Explorer PreviewをクリックしAzure IoT エクスプローラーを起動します。
Homeタブが表示されます。

iot-explorer-1

HomeタブにてConection via IoT Hub connection stringをクリックします。
Home > IoT hubsタブが表示されます。

iot-explorer-2

誤ってConnection via Azure Active Directoryをクリックしてしまった場合は、Switch authentication methodをクリックすることで*Homeタブに戻ることができます。

3-3-2. 接続文字列の設定

Home > IoT hubsタブにて +Add connectionをクリックします。
Add connection string画面がポップアップされます。

iot-explorer-3

Connection stringフィールドに3-3-2項でクリックボートにコピーしたプライマリ接続文字列をペースト(Ctrl+v)します。
Add connection string画面にHost name, Shard access policy name, Shard access policy keyが表示されます。

iot-explorer-4

ph-fx1に設定されている情報と齟齬が無いか確認しSaveをクリックします。
Home > IoT hubs > Deviceタブが表示されます。

iot-explorer-5

3-3-3. デバイスの登録(対称キー)

IoT Hubに接続するための認証に対称キーを用いる方式を使用するデバイスの登録方法を説明します。
X.509 CA 証明書を用いる場合、このステップは不要です。

Home > IoT hubs > Deviceタブにて+ Newアイコンをクリックします。
Home > IoT hubs > Device > Create new identityタブが表示されます。

iot-explorer-6

  1. Device IDフィールドにデバイスのIDを入力します。チュートリアルではet9ocs-1としています。
  2. Authentication typeラジオボタンは、Symmetric keyを選択します。
  3. Auto-generate keysチェックボックスはチェックをいれます。
  4. Connect this device to IoT hubは、enableを選択します。
  5. 設定を終え左上のCreateアイコンをクリックします。

Home > IoT hubs > Device > et9ocs-1 > Device identityタブが表示されます。

iot-explorer-7

Device ID, Primary key が、OpenBlocksに設定するパラメタとなります。

3-3-4. デバイスの登録(X.509 CA 証明書)

IoT Hubに接続するための認証にX.509 CA 証明書を用いる方式を使用するデバイスの登録方法を説明します。
対称キーを用いる場合、このステップは不要です。

Home > IoT hubs > Deviceタブにて+ Newアイコンをクリックします。
Home > IoT hubs > Device > Create new identity**タブが表示されます。

iot-explorer-8

  1. Device IDフィールドにデバイスのIDを入力します。チュートリアルではet9ocs-x509-1としています。
  2. Authentication typeラジオボタンは、X.509 CA signedを選択します。
  3. Connect this device to IoT hubは、enableを選択します。
  4. 設定を終えたら左上のCreateアイコンをクリックします。

Home > IoT hubs > Device > et9ocs-x509-1 > Device identityタブが表示されます。

iot-explorer-8

デバイス証明書とプライベートキーの作成

登録したDevice ID(et9ocs-x509-1)のデバイス証明書とそのプライベートキーを作成します。

2-2-8項のPowerShellにて3-3-4項で登録した*Device ID(et9ocs-x509-1)を引き数としてNew-CACertsDeviceファンクションを実行します。

PS C:\Users\user\iothub-cert> New-CACertsDevice et9ocs-x509-1
コマンド パイプライン位置 1 のコマンドレット New-CACertsDevice
次のパラメーターに値を指定してください:
certPassword: **********
警告: Generating certificate CN=et9ocs-x509-1 which is for prototyping, NOT PRODUCTION. It has a hard-coded password
and will expire in 30 days.
ディレクトリ: C:\Users\kanoh\iothub-cert
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2022/09/28 11:19 1802 et9ocs-x509-1.pfx
Enter Import Password:
read EC key
writing EC key
Certificate with subject CN=et9ocs-x509-1 has been output to C:\Users\user\iothub-cert\.\et9ocs-x509-1-public.pem
  1. New-CACertsDevice et9ocs-x509-1を実行するとcertPassword:プロンプトが表示され処理がサスペンドします。 適当なパスフレーズを入力します。
  2. certPassword:プロンプトに適当なパスフレーズを入力すると処理が再開し、Enter Import Password:プロンプトが表示され再びサスペンドします。 1項で入力したパスフレーズを入力します。

次のファイルが作成されます。

  • et9ocs-x509-1-all.pem
  • et9ocs-x509-1-private.pem (デバイス証明書のプライベートキー)
  • et9ocs-x509-1-public.pem (デバイス証明書)
  • et9ocs-x509-1.pfx