次の方法で共有


IoT Edge 証明書を管理する

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

重要

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

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

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

前提条件

  • Azure IoT Edge での証明書の使用方法について説明します

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

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

    • 使用する 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 では、次のようないくつかのケースでデバイスにデバイス CA が自動的に生成されます。

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

これら 2 つの自動的に生成された証明書には、構成ファイルにフラグを設定して、証明書の有効期間の日数を構成するオプションがあります。

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

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

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

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

    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>
    

    現時点では、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 証明書の有効期限が切れるまでの日数が一覧表示されます。

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

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

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

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

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

    ルート CA は、組織の最上位の証明機関ではありません。 これは IoT Edge シナリオの最上位の証明機関であり、IoT Edge ハブ モジュール、ユーザー モジュール、およびダウンストリーム デバイスが相互の信頼を確立するために使用します。

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

    現時点では、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 の 証明書 プロパティを、IoT Edge デバイス上の証明書ファイルとキー ファイルへのファイル URI パスに設定します。 証明書のプロパティの前にある # 文字を削除して、4 行のコメントを解除します。 証明書: 行に先行する空白がなく、入れ子になった項目が 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 モジュールにあります。

更新

サーバー証明書は、エッジ 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 ソリューションを運用環境にデプロイするための準備を行う」を参照してください。