次の方法で共有


X.509 デバイス証明書をロールする方法

IoT ソリューションのライフサイクル中に、証明書をロールする必要があります。 証明書をローリングする主な理由の 2 つが、セキュリティ侵害と証明書の有効期限です。

ローリング証明書は、侵害が発生した場合にシステムをセキュリティで保護するためのセキュリティのベスト プラクティスです。 侵害の想定手法の一環として、Microsoft は予防措置と共に事後対応型セキュリティ プロセスを実施する必要性を主張しています。 デバイス証明書のローリングは、これらのセキュリティ プロセスの一部として含める必要があります。 証明書を展開する頻度は、ソリューションのセキュリティ ニーズによって異なります。 機密性の高いデータを含むソリューションをお持ちのお客様は、証明書を毎日ロールする場合もあれば、数年ごとに証明書をロールする場合もあります。

ローリング デバイス証明書には、デバイスと IoT ハブに格納されている証明書の更新が含まれます。 その後、Device Provisioning Service (DPS) での通常の プロビジョニング を使用して、デバイスを IoT ハブで再プロビジョニングできます。

新しい証明書を取得する

IoT デバイスの新しい証明書を取得するには、デバイス ファクトリからの証明書の取得、独自の証明書の生成、Microsoft 以外のプロバイダーが証明書の作成を管理する方法など、さまざまな方法があります。

証明書は相互に署名して、ルート CA 証明書から リーフ証明書への信頼チェーンを形成できます。 署名証明書は、信頼チェーンの最後にリーフ証明書に署名するために使用される証明書です。 署名証明書には、ルート CA 証明書、または信頼チェーン内の中間証明書を指定できます。 詳細については、「X.509 証明書の証明」を参照してください。

署名証明書を取得するには、2 つの異なる方法があります。 運用システムに推奨される最初の方法は、ルート証明機関 (CA) から署名証明書を購入することです。 これにより、セキュリティが信頼できるソースにチェーンされます。

2 つ目の方法は、OpenSSL などのツールを使用して独自の X.509 証明書を作成することです。 この方法は X.509 証明書のテストに適していますが、セキュリティに関する保証はほとんどありません。 独自の CA プロバイダーとして機能する準備がない限り、このアプローチはテストにのみ使用することをお勧めします。

デバイスで証明書をロールする

デバイス上の証明書は、常に ハードウェア セキュリティ モジュール (HSM) のような安全な場所に格納する必要があります。 デバイス証明書をロールする方法は、最初にデバイスに証明書を作成してインストールした方法によって異なります。

Microsoft以外のプロバイダーから証明書を取得した場合、そのプロバイダーがどのようにして証明書を管理しているかを確認する必要があります。 そのプロセスは、彼らとの取り決めに含まれていることもあれば、別のサービスとして提供されることもあります。

独自のデバイス証明書を管理する場合は、証明書を更新するための独自のパイプラインを作成する必要があります。 古いリーフ証明書と新しいリーフ証明書の両方に同じ共通名 (CN) があることを確認します。 同じ CN を使用することで、重複する登録レコードを作成せずにデバイス自体を再プロビジョニングできます。

デバイスに新しい証明書をインストールするしくみには、多くの場合、次のいずれかの方法が含まれます。

  • 影響を受けるデバイスをトリガーして、PKI 証明機関 (CA) に新しい証明書署名要求 (CSR) を送信できます。 この場合、各デバイスは、CA から直接新しいデバイス証明書をダウンロードできる可能性があります。

  • 各デバイスの CSR を保持し、これを使用して PKI CA から新しいデバイス証明書を取得できます。 この場合は、 Device Update for IoT Hub などのセキュリティで保護された OTA 更新サービスを使用して、ファームウェア更新プログラムの各デバイスに新しい証明書をプッシュする必要があります。

DPS で証明書をロールする

デバイス証明書は、IoT ハブに手動で追加できます。 証明書は、Device Provisioning Service インスタンスを使用して自動化することもできます。 この記事では、Device Provisioning Service インスタンスが自動プロビジョニングをサポートするために使用されていることを前提としています。

デバイスが最初に自動プロビジョニングによってプロビジョニングされると、起動し、プロビジョニング サービスに問い合わせられます。 プロビジョニング サービスは、資格情報としてデバイスのリーフ証明書を使用して IoT ハブにデバイス ID を作成する前に、ID チェックを実行して応答します。 プロビジョニング サービスは、割り当てられている IoT ハブをデバイスに通知し、デバイスはそのリーフ証明書を使用して認証を行い、IoT ハブに接続します。

新しいリーフ証明書がデバイスにロールされると、新しい証明書を使用して接続するため、IoT ハブに接続できなくなります。 IoT ハブは、古い証明書を持つデバイスのみを認識します。 デバイスの接続試行の結果は、"未承認" の接続エラーです。 このエラーを解決するには、デバイスの新しいリーフ証明書を考慮するようにデバイスの登録エントリを更新する必要があります。 その後、プロビジョニング サービスは、デバイスの再プロビジョニング時に必要に応じて IoT Hub デバイス レジストリ情報を更新できます。

この接続エラーの例外の 1 つは、プロビジョニング サービスでデバイスの 登録グループ を作成するシナリオです。 この場合、デバイスの信頼チェーンのルート証明書または中間証明書をロールしていない場合、新しい証明書が登録グループで定義されている信頼チェーンの一部である場合、デバイスは認識されます。 セキュリティ侵害への対応としてこのシナリオが発生した場合は、少なくとも侵害されたと見なされるグループ内の特定のデバイス証明書を禁止する必要があります。 詳細については、「X.509 登録グループからの特定のデバイスを禁止する」を参照してください。

登録エントリの更新を処理する方法は、個々の登録を使用しているか、グループ登録を使用しているかによって異なります。 また、推奨される手順は、セキュリティ違反が原因で証明書を展開しているか、証明書の有効期限が切れているかによって異なります。 以降のセクションでは、これらの更新プログラムを処理する方法について説明します。

個々の登録の証明書を更新する

セキュリティ侵害に対応して証明書を展開する場合は、侵害された証明書を直ちに削除する必要があります。

証明書の有効期限を処理するために証明書をローリングする場合は、セカンダリ証明書の構成を使用して、プロビジョニングを試みるデバイスのダウンタイムを短縮する必要があります。 後で、セカンダリ証明書の有効期限が近づき、ロールする必要がある場合は、プライマリ構成を使用するようにローテーションできます。 この方法でプライマリ証明書とセカンダリ証明書の間をローテーションすると、プロビジョニングを試みるデバイスのダウンタイムが短縮されます。

ロールされた証明書の登録エントリの更新は、[ 登録の管理 ] ページで行います。 そのページにアクセスするには、次の手順に従います。

  1. Azure portal にサインインし、デバイスの登録エントリがある Device Provisioning Service インスタンスに移動します。

  2. [ 登録の管理] を選択します。

    Azure portal の [登録の管理] ページを示すスクリーンショット。

  3. [ 個々の登録 ] タブを選択し、一覧から登録 ID エントリを選択します。

  4. 既存の証明書を削除する場合は、[ プライマリ/セカンダリ証明書の削除または置換 ] チェックボックスをオンにします。 ファイル フォルダー アイコンを選択して、新しい証明書を参照してアップロードします。

    いずれかの証明書が侵害された場合は、できるだけ早く削除する必要があります。

    証明書の 1 つが有効期限に近づいている場合は、2 つ目の証明書がその日以降もアクティブである限り、そのまま保持できます。

    証明書を削除して新しい証明書をアップロードする方法を示すスクリーンショット。

  5. 完了したら [保存]を選択します

  6. 侵害された証明書をプロビジョニング サービスから削除した場合でも、IoT ハブに対するデバイスの登録が存在する限り、その証明書を使用して IoT ハブへのデバイス接続を行うことができます。 この 2 つの方法に対処できます。

    最初の方法は、IoT ハブに手動で移動し、侵害された証明書に関連付けられているデバイス登録を直ちに削除することです。 その後、更新された証明書を使用してデバイスが再びプロビジョニングされると、新しいデバイス登録が作成されます。

    2 つ目の方法は、再プロビジョニング のサポートを使用して、デバイスを同じ IoT ハブに再プロビジョニングすることです。 この方法を使用して、IoT ハブ上のデバイス登録の証明書を置き換えることができます。 詳細については、「 デバイスを再プロビジョニングする方法」を参照してください。

登録グループの証明書を更新する

セキュリティ侵害に対応してグループ登録を更新するには、侵害されたルート CA または中間証明書を直ちに削除する必要があります。

証明書の有効期限が切れる場合に備えて証明書を更新する際は、セカンダリ証明書の構成を使用して、プロビジョニングを試みるデバイスがダウンタイムを回避できるようにする必要があります。 後で、セカンダリ証明書も有効期限が近づき、ロールする必要がある場合は、プライマリ構成を使用するようにローテーションできます。 この方法でプライマリ証明書とセカンダリ証明書の間をローテーションすることで、プロビジョニングを試みるデバイスのダウンタイムが発生することはありません。

ルート CA 証明書を更新する

  1. Device Provisioning Service インスタンスのナビゲーション メニューの [設定] セクションから [証明書] を選択します。

    Azure portal の [証明書] ページを示すスクリーンショット。

  2. 一覧から侵害された証明書または期限切れの証明書を選択し、[ 削除] を選択します。 証明書名を入力して削除を確認し、[ OK] を選択します

  3. Device Provisioning Service で X.509 CA 証明書を確認し、新しいルート CA 証明書を追加して確認する方法に関する記事で説明されている手順に従います。

  4. Device Provisioning Service インスタンスのナビゲーション メニューの [設定] セクションから [登録の管理] を選択し、[登録グループ] タブを選択します。

  5. 一覧から登録グループ名を選択します。

  6. [X.509 証明書の設定] セクションで、新しいルート CA 証明書を選択して、侵害された証明書または期限切れの証明書を置き換えるか、セカンダリ証明書として追加します。

    登録グループの新しいアップロードされた証明書の選択を示すスクリーンショット。

  7. 保存 を選択します。

  8. 侵害された証明書をプロビジョニング サービスから削除した場合でも、その証明書は、IoT ハブへのデバイスの登録が存在する限り、IoT ハブへのデバイス接続に使用できます。 この 2 つの方法に対処できます。

    最初の方法は、IoT ハブに手動で移動し、侵害された証明書に関連付けられているデバイス登録を直ちに削除することです。 その後、更新された証明書を使用してデバイスが再びプロビジョニングされると、それぞれに対して新しいデバイス登録が作成されます。

    2 つ目の方法は、再プロビジョニング のサポートを使用して、デバイスを同じ IoT ハブに再プロビジョニングすることです。 この方法を使用して、IoT ハブ上のデバイス登録の証明書を置き換えることができます。 詳細については、「 デバイスを再プロビジョニングする方法」を参照してください。

中間証明書を更新する

  1. Device Provisioning Service インスタンスのナビゲーション メニューの [設定] セクションから [登録の管理] を選択し、[登録グループ] タブを選択します。

  2. 一覧からグループ名を選択します。

  3. 既存の証明書を削除する場合は、[ プライマリ/セカンダリ証明書の削除または置換 ] チェックボックスをオンにします。 ファイル フォルダー アイコンを選択して、新しい証明書を参照してアップロードします。

    いずれかの証明書が侵害された場合は、できるだけ早く削除する必要があります。

    証明書の 1 つが有効期限に近づいている場合は、2 つ目の証明書がその日以降もアクティブである限り、そのまま保持できます。

    プロビジョニング サービスに既に追加されている検証済みのルート CA 証明書を使用して、各中間証明書に署名する必要があります。 詳細については、「 X.509 証明書の構成証明」を参照してください。

    登録グループの中間証明書の置き換えを示すスクリーンショット。

  4. 侵害された証明書をプロビジョニング サービスから削除した場合でも、その証明書は、IoT ハブへのデバイスの登録が存在する限り、IoT ハブへのデバイス接続に使用できます。 この 2 つの方法に対処できます。

    最初の方法は、IoT ハブに手動で移動し、侵害された証明書に関連付けられているデバイス登録を直ちに削除することです。 その後、更新された証明書を使用してデバイスが再びプロビジョニングされると、それぞれに対して新しいデバイス登録が作成されます。

    2 つ目の方法は、再プロビジョニング のサポートを使用して、デバイスを同じ IoT ハブに再プロビジョニングすることです。 この方法を使用して、IoT ハブ上のデバイス登録の証明書を置き換えることができます。 詳細については、「 デバイスを再プロビジョニングする方法」を参照してください。

デバイスを再プロビジョニングする

デバイスとデバイスプロビジョニングサービスの両方で証明書がロールされると、デバイスはデバイスプロビジョニングサービスに接続して自分自身を再プロビジョニングすることができます。

再プロビジョニングするデバイスをプログラミングする簡単な方法の 1 つは、デバイスが IoT ハブへの接続を試行して "未承認" のエラーを受け取った場合に、プロビジョニング サービスに接続してプロビジョニング フローを通過するようにデバイスをプログラムすることです。

もう 1 つの方法は、古い証明書と新しい証明書の両方を短時間の重複に対して有効にし、IoT Hub を使用してデバイスにコマンドを送信し、プロビジョニング サービスを介して再登録して IoT Hub 接続情報を更新することです。 各デバイスはコマンドを異なる方法で処理できるため、コマンドが呼び出されたときに何をすべきかを知るためにデバイスをプログラムする必要があります。 IoT Hub 経由でデバイスにコマンドを実行する方法はいくつかあります。 ダイレクト メソッド または ジョブ を使用してプロセスを開始することをお勧めします。

再プロビジョニングが完了すると、デバイスは新しい証明書を使用して IoT Hub に接続できるようになります。

証明書を許可しない

セキュリティ侵害に対応するために、デバイス証明書を許可しない必要がある場合があります。 デバイス証明書を禁止するには、ターゲット デバイス/証明書の登録エントリを無効にします。 詳細については、「 Azure IoT Hub Device Provisioning Service からデバイスを登録解除または取り消す方法」を参照してください。

証明書が無効な登録エントリの一部として含まれると、証明書が別の登録エントリの一部として有効になっている場合でも、その証明書を使用して IoT ハブに登録しようとすると失敗します。

次のステップ