IoT Edge 証明書を管理する

適用対象: [はい] アイコン IoT Edge 1.1

重要

IoT Edge 1.1 のサポート終了日は、2022 年 12 月 13 日でした。 本製品、サービス、テクノロジ、または API のサポート内容については、Microsoft 製品のライフサイクルに関するページをご確認ください。 最新バージョンの IoT Edge への更新の詳細については、「 Update IoT Edge」を参照してください。

すべての IoT Edge デバイスは、証明書を使用して、デバイス上で実行されるランタイムと任意のモジュール間の安全な接続を作成します。 ゲートウェイとして機能している IoT Edge デバイスは、これらの同じ証明書を使用してダウンストリームのデバイスに接続します。 IoT Edge デバイスでのさまざまな証明書の機能の詳細については、「Azure IoT Edge での証明書の使用方法について理解する」を参照してください。

Note

この記事全体で使用されている "ルート CA" という用語は、IoT ソリューションの証明書チェーンにおいて最上位の証明機関の証明書を指します。 シンジケート証明機関の証明書ルートや、組織の証明機関のルートを使用する必要はありません。 多くの場合、それは実際には中間 CA の証明書です。

前提条件

  • Azure IoT Edge での証明書の使用方法について理解する。

  • IoT Edge デバイス。 IoT Edge デバイスがセットアップされていない場合は、Azure 仮想マシンで作成できます。 クイックスタートの記事のいずれかの手順に従って、仮想 Linux デバイスを作成するか、仮想 Windows デバイスを作成します。

  • 構成テンプレートに従って IoT Edge 構成ファイル config.toml を編集できること。

    • 使用する config.toml がテンプレートに基づいていない場合は、テンプレートを開き、コメントに示されたガイダンスを使用して、テンプレートの構造に従って構成セクションを追加します。

    • 構成されていない新しい IoT Edge インストールがある場合は、テンプレートをコピーして構成を初期化します。 既存の構成がある場合は、このコマンドを使用しないでください。 ファイルが上書きされます。

      sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
      

デバイス CA

すべての IoT Edge デバイスは、証明書を使用して、デバイス上で実行されるランタイムと任意のモジュール間の安全な接続を作成します。 ゲートウェイとして機能している IoT Edge デバイスは、これらの同じ証明書を使用してダウンストリームのデバイスに接続します。 IoT Edge デバイスでのさまざまな証明書の機能の詳細については、「Azure IoT Edge での証明書の使用方法について理解する」を参照してください。

次のような複数の場合に、IoT Edge によってデバイス上に証明書が自動的に生成されます。

  • IoT Edge のインストールとプロビジョニングを行うときに自身の運用証明書を提供しない場合は、IoT Edge セキュリティ マネージャーによって、デバイス CA 証明書が自動的に生成されます。 この自己署名証明書は、運用環境ではなく、開発およびテスト シナリオのみを対象としています。 この証明書は 90 日後に有効期限が切れます。
  • IoT Edge セキュリティ マネージャーによって、デバイス CA 証明書によって署名されたワークロード CA 証明書も生成されます。

自動的に生成されたこれら 2 つの証明書に対して、構成ファイルでフラグを設定して証明書の有効期間の日数を構成することもできます。

Note

IoT Edge セキュリティ マネージャーによって自動生成される 3 つ目の証明書として、IoT Edge ハブ サーバー証明書があります。 この証明書の有効期間は常に 30 日ですが、有効期限が切れる前に自動的に更新されます。 構成ファイルに設定されている自動生成の CA 有効期間値はこの証明書に影響を与えません。

クイックスタート デバイス CA 証明書の有効期間をカスタマイズする

指定された日数が経過して有効期限が切れると、IoT Edge を再起動してデバイス CA 証明書を再生成する必要があります。 デバイス CA 証明書は自動的に更新されません。

  1. 証明書の有効期限を既定値の 90 日以外に構成するには、構成ファイルの certificates セクションに日数の値を追加します。

    certificates:
      device_ca_cert: "<ADD URI TO DEVICE CA CERTIFICATE HERE>"
      device_ca_pk: "<ADD URI TO DEVICE CA PRIVATE KEY HERE>"
      trusted_ca_certs: "<ADD URI TO TRUSTED CA CERTIFICATES HERE>"
      auto_generated_ca_lifetime_days: <value>
    

    Note

    現時点では、libiothsm の制限により、2038 年 1 月 1 日以降に有効期限が切れる証明書は使用できません。

  2. hsm フォルダーの内容を削除して、以前に生成された証明書をすべて削除します。

    • /var/aziot/hsm/certs
    • /var/aziot/hsm/cert_keys
  3. IoT Edge サービスを再起動します。

    sudo systemctl restart iotedge
    
  4. 有効期間の設定を確認します。

    sudo iotedge check --verbose
    

    自動的に生成されたデバイス CA 証明書の有効期限が切れるまでの日数が表示された production readiness: certificates チェックの出力を確認します。

運用環境用にデバイス CA をインストールする

運用環境に移行した後、またはゲートウェイデバイスを作成する場合は、独自の証明書を指定する必要があります。

運用環境用のデバイス CA を作成してインストールする

  1. 独自の証明機関を使用して次のファイルを作成します。

    • ルート CA
    • デバイス CA 証明書
    • デバイス CA 秘密キー

    "ルート CA" は、組織の最上位の証明機関ではありません。 これは IoT Edge シナリオの最上位の証明機関であり、IoT Edge ハブ モジュール、ユーザー モジュール、他のダウンストリームのデバイスはこれを利用してお互いの間で信頼関係を確立します。

    これらの証明書の例を確認するには、「サンプルとチュートリアルのためのテスト CA 証明書を管理する」にある、デモ証明書を作成するスクリプトをご確認ください。

    Note

    現時点では、libiothsm の制限により、2038 年 1 月 1 日以降に有効期限が切れる証明書は使用できません。

  2. 3 つの証明書とキー ファイルを IoT Edge デバイスにコピーします。 Azure Key Vault のようなサービスや、Secure copy protocol のような関数を使用して、証明書ファイルを削除することができます。 IoT Edge デバイス自体で証明書を生成した場合は、この手順をスキップして、作業ディレクトリへのパスを使用することができます。

    ヒント

    サンプル スクリプトを使用してデモ証明書を作成した場合、3 つの証明書とキー ファイルは次のパスにあります。

    • デバイス CA 証明書: <WRKDIR>\certs\iot-edge-device-MyEdgeDeviceCA-full-chain.cert.pem
    • デバイス CA 秘密キー: <WRKDIR>\private\iot-edge-device-MyEdgeDeviceCA.key.pem
    • ルート CA: <WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem
  1. IoT Edge セキュリティ デーモン構成ファイル /etc/iotedge/config.yaml を開きます。

  2. config.yaml 内の certificate プロパティを、IoT Edge デバイス上の証明書ファイルとキー ファイルへのファイル URI パスに設定します。 証明書プロパティの前の # 文字を削除して、4 行をコメント解除します。 certificates: の行に先行する空白文字がなく、入れ子になった項目が 2 つの空白でインデントされていることを確認します。 次に例を示します。

    certificates:
       device_ca_cert: "file:///<path>/<device CA cert>"
       device_ca_pk: "file:///<path>/<device CA key>"
       trusted_ca_certs: "file:///<path>/<root CA cert>"
    
  3. ユーザー iotedge に、証明書を保持するディレクトリの読み取り/書き込み権限があることを確認します。

  4. 以前にこのデバイスの IoT Edge に他の証明書を使用していた場合は、IoT Edge を起動または再起動する前に、次の 2 つのディレクトリにあるファイルを削除します。

    • /var/aziot/hsm/certs
    • /var/aziot/hsm/cert_keys
  5. IoT Edge を再起動します。

    sudo iotedge system restart
    

モジュール サーバー証明書

Edge デーモンによって、Edge モジュールで使用するためのモジュール サーバーおよび ID 証明書が発行されます。 必要に応じて ID とサーバーの証明書を更新する責任は、Edge モジュールにあります。

更新

サーバー証明書は、Edge CA 証明書から、または DPS で構成された CA を介して発行できます。 発行方法に関係なく、これらの証明書はモジュールによって更新される必要があります。

1.2 以降の変更点

  • デバイス CA 証明書は、Edge CA 証明書という名前に変わりました。
  • ワークロード CA 証明書は、非推奨になりました。 IoT Edge セキュリティ マネージャーは、IoT Edge ハブ edgeHub サーバー証明書を Edge CA 証明書から直接生成するようになりました。その中間のワークロード CA 証明書は生成されません。
  • 既定の構成ファイルの名前と場所が新しくなり、既定では /etc/iotedge/config.yaml から /etc/aziot/config.toml になっています。 iotedge config import コマンドを使用すると、構成情報を以前の場所と構文から新しいものへと移行できます。

次のステップ

証明書を IoT Edge デバイス上にインストールするステップは、ソリューションを運用環境にデプロイする前に必ず実行する必要があります。 詳細については、「IoT Edge ソリューションを運用環境にデプロイするための準備を行う」を参照してください。