IoT Edge デバイスで証明書を管理するManage certificates on an IoT Edge device

適用対象: [はい] アイコン IoT Edge 1.1 その他のバージョン: IoT Edge 1.2Applies to: yes icon IoT Edge 1.1 Other versions: IoT Edge 1.2

適用対象: [はい] アイコン IoT Edge 1.2 その他のバージョン: IoT Edge 1.1Applies to: yes icon IoT Edge 1.2 Other versions: IoT Edge 1.1

すべての IoT Edge デバイスは、証明書を使用して、デバイス上で実行されるランタイムと任意のモジュール間の安全な接続を作成します。All IoT Edge devices use certificates to create secure connections between the runtime and any modules running on the device. ゲートウェイとして機能している IoT Edge デバイスは、これらの同じ証明書を使用してダウンストリームのデバイスに接続します。IoT Edge devices functioning as gateways use these same certificates to connect to their downstream devices, too.

運用環境の証明書をインストールするInstall production certificates

初めて IoT Edge をインストールしてデバイスをプロビジョニングする場合、サービスをテストできるように、デバイスは一時的な証明書を使用して設定されます。When you first install IoT Edge and provision your device, the device is set up with temporary certificates so that you can test the service. これらの一時的な証明書は 90 日で有効期限が切れます。もしくは、マシンを再起動するとリセットされます。These temporary certificates expire in 90 days, or can be reset by restarting your machine. 運用環境に移行した後、またはゲートウェイデバイスを作成する場合は、独自の証明書を指定する必要があります。Once you move into a production scenario, or you want to create a gateway device, you need to provide your own certificates. この記事では、証明書を IoT Edge デバイスにインストールするステップを説明します。This article demonstrates the steps to install certificates on your IoT Edge devices.

さまざまな種類の証明書や、それらの役割についての詳細は、「Azure IoT Edge 証明書の使用方法の詳細」を参照してください。To learn more about the different types of certificates and their roles, see Understand how Azure IoT Edge uses certificates.

注意

この記事全体で使用される「ルート CA」という用語は、自分の IoT ソリューションの証明書チェーンのうち、最上位の公開証明機関を示しています。The term "root CA" used throughout this article refers to the topmost authority public certificate of the certificate chain for your IoT solution. シンジケート証明機関の証明書ルートや、組織の証明機関のルートを使用する必要はありません。You do not need to use the certificate root of a syndicated certificate authority, or the root of your organization's certificate authority. 多くの場合、実際は中間 CA の公開証明書です。In many cases, it is actually an intermediate CA public certificate.

前提条件Prerequisites

  • IoT Edge デバイス。An IoT Edge device.

    IoT Edge デバイスを設定していない場合は、Azure 仮想マシンで作成できます。If you don't have an IoT Edge device set up, you can create one in an Azure virtual machine. クイックスタートの記事のいずれかの手順に従って、仮想 Linux デバイスを作成するか、仮想 Windows デバイスを作成します。Follow the steps in one of the quickstart articles to Create a virtual Linux device or Create a virtual Windows device.

  • 自己署名したか、Baltimore、Verisign、DigiCert、GlobalSign などの信頼されている商用証明機関から購入したルート証明機関 (CA) の証明書がある。Have a root certificate authority (CA) certificate, either self-signed or purchased from a trusted commercial certificate authority like Baltimore, Verisign, DigiCert, or GlobalSign.

    ルート証明機関がまだないものの、運用証明書を必要とする IoT Edge 機能を試してみたい (ゲートウェイ シナリオなど) 場合、「デモ証明書を作成して IoT Edge デバイスの機能をテストする」を参照してください。If you don't have a root certificate authority yet, but want to try out IoT Edge features that require production certificates (like gateway scenarios) you can Create demo certificates to test IoT Edge device features.

運用証明書を作成するCreate production certificates

独自の証明機関を使用して次のファイルを作成する必要があります。You should use your own certificate authority to create the following files:

  • ルート CARoot CA
  • デバイス CA 証明書Device CA certificate
  • デバイス CA 秘密キーDevice CA private key

この記事で ルート CA と呼ばれているものは、組織の最上位の証明機関ではありません。In this article, what we refer to as the root CA is not the topmost certificate authority for an organization. これは IoT Edge シナリオの最上位の証明機関であり、IoT Edge ハブ モジュール、ユーザー モジュール、他のダウンストリームのデバイスはこれを利用してお互いの間で信頼関係を確立します。It's the topmost certificate authority for the IoT Edge scenario, which the IoT Edge hub module, user modules, and any downstream devices use to establish trust between each other.

注意

現時点では、libiothsm の制限により、2038 年 1 月 1 日以降に有効期限が切れる証明書は使用できません。Currently, a limitation in libiothsm prevents the use of certificates that expire on or after January 1, 2038.

これらの証明書の例を確認するには、「サンプルとチュートリアルのためのテスト CA 証明書を管理する」にある、デモ証明書を作成するスクリプトをご確認ください。To see an example of these certificates, review the scripts that create demo certificates in Managing test CA certificates for samples and tutorials.

証明書をデバイスにインストールするInstall certificates on the device

証明書チェーンを IoT Edge デバイスにインストールし、新しい証明書を参照するように IoT Edge ランタイムを構成します。Install your certificate chain on the IoT Edge device and configure the IoT Edge runtime to reference the new certificates.

3 つの証明書とキー ファイルを IoT Edge デバイスにコピーします。Copy the three certificate and key files onto your IoT Edge device. Azure Key Vault のようなサービスや、Secure copy protocol のような関数を使用して、証明書ファイルを削除することができます。You can use a service like Azure Key Vault or a function like Secure copy protocol to move the certificate files. IoT Edge デバイス自体で証明書を生成した場合は、この手順をスキップして、作業ディレクトリへのパスを使用することができます。If you generated the certificates on the IoT Edge device itself, you can skip this step and use the path to the working directory.

IoT Edge for Linux on Windows を使用している場合は、Azure IoT Edge の id_rsa ファイルにある SSH キーを使用して、ホスト OS と Linux 仮想マシンとの間のファイル転送を認証する必要があります。If you are using IoT Edge for Linux on Windows, you need to use the SSH key located in the Azure IoT Edge id_rsa file to authenticate file transfers between the host OS and the Linux virtual machine. 認証された SCP は、次のコマンドを使用して実行できます。You can do an authenticated SCP using the following command:

C:\WINDOWS\System32\OpenSSH\scp.exe -i 'C:\Program Files\Azure IoT Edge\id_rsa' <PATH_TO_SOURCE_FILE> iotedge-user@<VM_IP>:<PATH_TO_FILE_DESTINATION>

注意

Linux 仮想マシンの IP アドレスは、Get-EflowVmAddr コマンドを使用して照会できます。The Linux virtual machine's IP address can be queried via the Get-EflowVmAddr command.

サンプル スクリプトを使用してデモ証明書を作成した場合、次のファイルを IoT Edge デバイスにコピーします。If you used the sample scripts to Create demo certificates, copy the following files onto your IoT-Edge device:

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

    • Linux と IoT Edge for Linux on Windows: /etc/iotedge/config.yamlLinux and IoT Edge for Linux on Windows: /etc/iotedge/config.yaml

    • Windows コンテナーを使用する Windows: C:\ProgramData\iotedge\config.yamlWindows using Windows containers: C:\ProgramData\iotedge\config.yaml

  2. config.yaml 内の certificate プロパティを、IoT Edge デバイス上の証明書ファイルとキー ファイルへのファイル URI パスに設定します。Set the certificate properties in config.yaml to the file URI path to the certificate and key files on the IoT Edge device. 証明書プロパティの前の # 文字を削除して、4 行をコメント解除します。Remove the # character before the certificate properties to uncomment the four lines. certificates: の行に先行する空白文字がなく、入れ子になった項目が 2 つの空白でインデントされていることを確認します。Make sure the certificates: line has no preceding whitespace and that nested items are indented by two spaces. 次に例を示します。For example:

    • Linux と IoT Edge for Linux on Windows:Linux and IoT Edge for Linux on Windows:

      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>"
      
    • Windows コンテナーを使用する Windows:Windows using Windows containers:

      certificates:
         device_ca_cert: "file:///C:/<path>/<device CA cert>"
         device_ca_pk: "file:///C:/<path>/<device CA key>"
         trusted_ca_certs: "file:///C:/<path>/<root CA cert>"
      
  3. Linux デバイスでは、証明書を保持しているディレクトリの読み取り権限をユーザー iotedge が必ず保持しているようにします。On Linux devices, make sure that the user iotedge has read permissions for the directory holding the certificates.

  4. 以前にこのデバイスの IoT Edge に他の証明書を使用していた場合は、IoT Edge を起動または再起動する前に、次の 2 つのディレクトリにあるファイルを削除します。If you've used any other certificates for IoT Edge on the device before, delete the files in the following two directories before starting or restarting IoT Edge:

    • Linux と IoT Edge for Linux on Windows: /var/lib/iotedge/hsm/certs/var/lib/iotedge/hsm/cert_keysLinux and IoT Edge for Linux on Windows: /var/lib/iotedge/hsm/certs and /var/lib/iotedge/hsm/cert_keys

    • Windows コンテナーを使用する Windows: C:\ProgramData\iotedge\hsm\certsC:\ProgramData\iotedge\hsm\cert_keysWindows using Windows containers: C:\ProgramData\iotedge\hsm\certs and C:\ProgramData\iotedge\hsm\cert_keys

  1. IoT Edge セキュリティ デーモン構成ファイル /etc/aziot/config.toml を開きます。Open the IoT Edge security daemon config file: /etc/aziot/config.toml

  2. ファイルの先頭にある trust_bundle_cert パラメーターを見つけます。Find the trust_bundle_cert parameter at the beginning of the file. この行をコメント解除し、デバイス上のルート CA 証明書にファイルの URI を指定します。Uncomment this line, and provide the file URI to the root CA certificate on your device.

    trust_bundle_cert = "file:///<path>/<root CA cert>"
    
  3. config.toml ファイルで [edge_ca] セクションを見つけます。Find the [edge_ca] section in the config.toml file. このセクションの行をコメント解除し、IoT Edge デバイス上の証明書とキー ファイルにファイル URI パスを指定します。Uncomment the lines in this section and provide the file URI paths for the certificate and key files on the IoT Edge device.

    [edge_ca]
    cert = "file:///<path>/<device CA cert>"
    pk = "file:///<path>/<device CA key>"
    
  4. ユーザー iotedge に、証明書を保持するディレクトリの読み取り権限があることを確認します。Make sure that the user iotedge has read permissions for the directory holding the certificates.

  5. 以前にこのデバイスの IoT Edge に他の証明書を使用していた場合は、IoT Edge を起動または再起動する前に、次の 2 つのディレクトリにあるファイルを削除します。If you've used any other certificates for IoT Edge on the device before, delete the files in the following two directories before starting or restarting IoT Edge:

    • /var/lib/aziot/certd/certs
    • /var/lib/aziot/keyd/keys

証明書の有効期間をカスタマイズするCustomize certificate lifetime

IoT Edge では、次のような複数の場合に、デバイスに証明書を自動的に生成します。IoT Edge automatically generates certificates on the device in several cases, including:

  • IoT Edge のインストールとプロビジョニングを行うときに自身の運用証明書を提供しない場合は、IoT Edge セキュリティ マネージャーによって、デバイス CA 証明書 が自動的に生成されます。If you don't provide your own production certificates when you install and provision IoT Edge, the IoT Edge security manager automatically generates a device CA certificate. この自己署名証明書は、運用環境ではなく、開発およびテスト シナリオのみを対象としています。This self-signed certificate is only meant for development and testing scenarios, not production. この証明書は 90 日後に有効期限が切れます。This certificate expires after 90 days.
  • IoT Edge セキュリティ マネージャーは、デバイス CA 証明書によって署名された ワークロード CA 証明書 も生成しますThe IoT Edge security manager also generates a workload CA certificate signed by the device CA certificate

IoT Edge デバイスでのさまざまな証明書の機能の詳細については、「Azure IoT Edge での証明書の使用方法について理解する」を参照してください。For more information about the function of the different certificates on an IoT Edge device, see Understand how Azure IoT Edge uses certificates.

自動的に生成されたこれら 2 つの証明書に対して、構成ファイルで auto_generated_ca_lifetime_days フラグを設定して、証明書の有効期間の日数を構成することもできます。For these two automatically generated certificates, you have the option of setting the auto_generated_ca_lifetime_days flag in the config file to configure the number of days for the lifetime of the certificates.

注意

IoT Edge セキュリティ マネージャーによって自動生成される 3 つ目の証明書として、IoT Edge ハブ サーバー証明書 があります。There is a third auto-generated certificate that the IoT Edge security manager creates, the IoT Edge hub server certificate. この証明書の有効期間は常に 90 日ですが、有効期限が切れる前に自動的に更新されます。This certificate always has a 90 day lifetime, but is automatically renewed before expiring. auto_generated_ca_lifetime_days 値は、この証明書には影響しません。The auto_generated_ca_lifetime_days value doesn't affect this certificate.

指定された日数が経過して有効期限が切れると、IoT Edge を再起動してデバイス CA 証明書を再生成する必要があります。Upon expiry after the specified number of days, IoT Edge has to be restarted to regenerate the device CA certificate. デバイス CA 証明書は自動的に更新されません。The device CA certificate won't be renewed automatically.

  1. 証明書の有効期限を既定値の 90 日以外に構成するには、構成ファイルの certificates セクションに日数の値を追加します。To configure the certificate expiration to something other than the default 90 days, add the value in days to the certificates section of the config file.

    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 日以降に有効期限が切れる証明書は使用できません。Currently, a limitation in libiothsm prevents the use of certificates that expire on or after January 1, 2038.

  2. hsm フォルダーの内容を削除して、以前に生成された証明書をすべて削除します。Delete the contents of the hsm folder to remove any previously generated certificates.

    • Linux と IoT Edge for Linux on Windows: /var/lib/iotedge/hsm/certs/var/lib/iotedge/hsm/cert_keysLinux and IoT Edge for Linux on Windows: /var/lib/iotedge/hsm/certs and /var/lib/iotedge/hsm/cert_keys

    • Windows コンテナーを使用する Windows: C:\ProgramData\iotedge\hsm\certsC:\ProgramData\iotedge\hsm\cert_keysWindows using Windows containers: C:\ProgramData\iotedge\hsm\certs and C:\ProgramData\iotedge\hsm\cert_keys

  3. IoT Edge サービスを再起動します。Restart the IoT Edge service.

    • Linux と IoT Edge for Linux on Windows:Linux and IoT Edge for Linux on Windows:
    sudo systemctl restart iotedge
    
    • Windows コンテナーを使用する Windows:Windows using Windows containers:
    Restart-Service iotedge
    
  4. 有効期間の設定を確認します。Confirm the lifetime setting.

    • Linux と IoT Edge for Linux on Windows:Linux and IoT Edge for Linux on Windows:
    sudo iotedge check --verbose
    
    • Windows コンテナーを使用する Windows:Windows using Windows containers:
    iotedge check --verbose
    

    自動的に生成されたデバイス CA 証明書の有効期限が切れるまでの日数が表示された production readiness: certificates チェックの出力を確認します。Check the output of the production readiness: certificates check, which lists the number of days until the automatically generated device CA certificates expire.

次のステップNext steps

証明書を IoT Edge デバイス上にインストールするステップは、ソリューションを運用環境にデプロイする前に必ず実行する必要があります。Installing certificates on an IoT Edge device is a necessary step before deploying your solution in production. 詳細については、「IoT Edge ソリューションを運用環境にデプロイするための準備を行う」を参照してください。Learn more about how to Prepare to deploy your IoT Edge solution in production.