関連記事。
- Azure_IoT_Central_ESP32をSeeed Studio XIAO ESP32C3で動かしてみた(グループSAS)
- Azure_IoT_Central_ESP32をSeeed Studio XIAO ESP32C3で動かしてみた(個別X.509)
- Azure_IoT_Central_ESP32をSeeed Studio XIAO ESP32C3で動かしてみた(個別SAS)
- Azure_IoT_Central_ESP32をSeeed Studio XIAO ESP32C3で動かしてみた(グループX.509)
- Azure_IoT_Central_ESP32をSeeed Studio XIAO ESP32C3で動かしてみた(グループX.509 その2)
これの続き。
Azure IoT CentralのグループX.509を試しました。
ルートCA証明書と中間CA証明書を作る
opensslコマンドだと面倒ですが、azure-iot-sdk-cリポジトリにスクリプトが用意されています。
WindowsよりもLinuxのほうが手数が少ないので、手順に従って、WSLのUbuntu 20.04に準備します。
git clone https://github.com/Azure/azure-iot-sdk-c cd azure-iot-sdk-c/tools/CACertificates chmod 700 certGen.sh
certGen.shでルートCA証明書と中間CA証明書を作成します。
./certGen.sh create_root_and_intermediate
はい、出来上がり。
赤枠の部分が、証明書と秘密鍵です。
Group Enrollmentを作る
Azure IoT CentralのPermissions > Device connection groups画面でNewをクリックして、新しくGroup Enrollmentを作成します。Name
は適当に入れて、Attestation type
はCertificates (X.509)を選びます。
Primaryに、さきほど作成した中間CA証明書(azure-iot-test-only.intermediate.cert.pem)を登録します。
デバイスの証明書を作る
中間CA証明書を使って、デバイスの証明書を作ります。
./certGen.sh create_device_certificate_from_intermediate device1
さあ、動かそう
サンプルコードの変更はiot_configs.h
だけです。
IOT_CONFIG_DEVICE_CERT
はnew-device.cert.pemの中身を、IOT_CONFIG_DEVICE_CERT_PRIVATE_KEY
はnew-device.key.pemの中身を書きます。
#define IOT_CONFIG_WIFI_SSID "seeed2g" #define IOT_CONFIG_WIFI_PASSWORD "seeedjapan" #define IOT_CONFIG_USE_X509_CERT #define IOT_CONFIG_DEVICE_CERT "-----BEGIN CERTIFICATE-----\r\n" \ "MIIBVTCB+6ADAgECAhRGUXxMSg8lDUlZVlsZVTbHyA/gujAKBggqhkjOPQQDAjAS\r\n" \ ... "0jtcD+DMBnSn\r\n" \ "-----END CERTIFICATE-----" #define IOT_CONFIG_DEVICE_CERT_PRIVATE_KEY "-----BEGIN RSA PRIVATE KEY-----\r\n" \ "MIIJKQIBAAKCAgEAtE6PM8sA1qHiy7e0jEEep6ydpcdIK9dc4rfAXC6kuAnqJjkY\r\n" \ ... "Rw4SyQJyg4Y0w0HnH2QX9kGH/bDuDdXtNwoQQtRLUa10NDcOr5k6Mfqt0clZ\r\n" \ "-----END RSA PRIVATE KEY-----" #define DPS_ID_SCOPE "0ne0014D070" #define IOT_CONFIG_DEVICE_ID "device1"