デバイス プロビジョニング サービスで X.509 CA 証明書を確認する方法

検証済みの X.509 証明機関 (CA) 証明書は、アップロードされてプロビジョニング サービスに登録され、自動的に、またはサービスで所有証明を行って検証された CA 証明書です。

検証済みの証明書は、登録グループを使うときに重要な役割を果たします。 証明書の所有権の検証は、証明書のアップロード者が証明書の秘密キーを所有していることを確認することで、追加のセキュリティ レイヤーを提供します。 検証は、悪意のあるアクターがユーザーのトラフィックをスニッフィングして中間証明書を抽出し、その証明書を使って、独自のプロビジョニング サービスに登録グループを作成し、効果的にデバイスをハイジャックすることを防ぎます。 証明書チェーンのルートまたは中間証明書の所有権を証明することにより、ユーザーはその登録グループの一部として登録されるデバイスのリーフ証明書を生成する権限があることを証明します。 この理由により、登録グループで構成されるルートまたは中間証明書は、検証済みの証明書であるか、またはサービスで認証するときにデバイスが存在する証明書チェーンの検証済み証明書にロールアップする必要があります。 X.509 証明書の構成証明の詳細については、X.509 証明書の説明を参照してください。

前提条件

この記事の手順を開始する前に、次の前提条件を準備しておく必要があります。

  • Azure サブスクリプションで作成された DPS インスタンス。
  • .cer または .pem 証明書ファイル。

自己証明を使用した中間 CA またはルート CA の自動検証

信頼できる中間またはルート CA を使用していて、証明書の完全な所有権が自分にあることを知っている場合は、証明書を確認したことを自己証明できます。​

自動検証済みの証明書を追加するには、次の手順に従います。

  1. Azure portal でプロビジョニング サービスに移動し、左側のメニューから [証明書] を選択します。

  2. [追加] を選択して新しい証明書を追加します。

  3. 証明書のわかりやすい表示名を入力します。

  4. X.509 証明書のパブリック部分を表す .cer または .pem ファイルを参照します。 アップロードをクリックします。

  5. [証明書の状態をアップロード時に確認済みに設定する] の横のチェック ボックスをオンにします。

    証明書のアップロードと状態を検証済みに設定する方法を示すスクリーンショット。

  6. [保存] を選択します。

  7. [証明書] タブに、"確認済み" 状態で証明書が表示されます。

    アップロード後の検証済み証明書を示すスクリーンショット。

中間 CA またはルート CA の手動検査

新しい中間またはルート CA 証明書を DPS にアップロードする際には、自動検証をお勧めします。 ただし、IoT シナリオに適している場合は、所有証明を実行できます。

所有証明では次の手順が実行されます。

  1. X.509 CA 証明書に対してプロビジョニング サービスによって生成された一意の確認コードを取得します。 これは Azure Portal から行うことができます。
  2. サブジェクトとして確認コードを含む X.509 検証証明書を作成し、X.509 CA 証明書に関連付けられている秘密キーで証明書に署名します。
  3. 署名された検証証明書をサービスにアップロードします。 サービスは、検証対象の CA 証明書のパブリック部分を使って検証証明書を検証し、ユーザーが CA 証明書の秘密キーを所有していることを証明します。

X.509 証明書のパブリック部分を登録して確認コードを取得する

プロビジョニング サービスに CA 証明書を登録し、所有証明の間に使用できる確認コードを取得するには、以下の手順のようにします。

  1. Azure Portal でプロビジョニング サービスに移動し、左側のメニューから [証明書] を開きます。

  2. [追加] を選択して新しい証明書を追加します。

  3. [証明書名] フィールドに、証明書のフレンドリ表示名を入力します。

  4. フォルダー アイコンを選択し、次に X.509 証明書のパブリック部分を表す .cer または .pem ファイルを参照します。 [Open] を選択します。

  5. 証明書が正常にアップロードされたことを示す通知が表示されたら、[保存] を選択します。

    自動検証なしで証明書をアップロードする方法を示すスクリーンショット。

    証明書が、[証明書エクスプローラー] の一覧に表示されます。 この証明書の状態が [未確認] になっていることに注意してください。

  6. 前の手順で追加した証明書を選択して、詳細を開きます。

  7. 証明書の詳細で、空の [確認コード] フィールドがあることに注意してください。 [確認コードの生成] ボタンを選択します。

    所有証明の確認コードの生成を示すスクリーンショット。

  8. プロビジョニング サービスにより、証明書の所有権の検証に使うことができる確認コードが作成されます。 このコードをクリップボードにコピーします。

確認コードにデジタル署名して検証証明書を作成する

次に、X.509 CA 証明書に関連付けられた秘密キーを使って、DPS から確認コードに署名する必要があります。これにより、署名が生成されます。 この手順は所有証明と呼ばれ、署名された検証証明書になります。

Microsoft では、署名された検証証明書の作成に役立つツールとサンプルが提供されています。

  • Azure IoT Hub C SDK は、開発用の CA 証明書とリーフ証明書を作成し、確認コードを使って所有証明を実行するための、PowerShell (Windows) スクリプトと Bash (Linux) スクリプトを提供します。 システムに関連するファイルを作業フォルダーにダウンロードし、CA 証明書の管理の readme の説明に従って、CA 証明書で所有証明を実行します。
  • Azure IoT Hub C# SDK にはグループ証明書の検証のサンプルが含まれており、所有証明に使うことができます。

ドキュメントと SDK で提供されている PowerShell スクリプトおよび Bash スクリプトは、OpenSSL に依存します。 また、OpenSSL または他のサードパーティ製ツールを使って、所有証明を行うこともできます。 SDK で提供されているツールの使用例については、「X.509 証明書チェーンを作成する」を参照してください。

署名された検証証明書をアップロードする

結果の検証証明書としての署名を、Azure portal のプロビジョニング サービスにアップロードします。

  1. 検証コードをコピーした Azure portal の証明書の詳細で、検証証明書の .pem または .cer ファイル フィールドの横にあるフォルダー アイコンを選択します。 システムから署名された検証証明書を参照し、[開く] を選択します。

  2. 証明書が正常にアップロードされたら、[確認] を選択します。 [証明書] リストでは、証明書の状態が [確認済み] に変わります。 自動的に更新されない場合は、[更新] を選択してください。

次のステップ