Azure_IoT_Central_ESP32をSeeed Studio XIAO ESP32C3で動かしてみた(グループX.509)

関連記事。

これの続き。

matsujirushi.hatenablog.jp

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"

参考リンク