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

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

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

前提条件

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

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

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

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

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

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

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

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

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

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

    Screenshot that shows uploading a certificate and setting status to verified.

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

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

    Screenshot that shows the verified certificate after upload.

中間 CA またはルート 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. 証明書が正常にアップロードされたことを示す通知が表示されたら、[保存] を選択します。

    Screenshot that shows uploading a certificate without automatic verification.

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

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

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

    Screenshot that shows generating a verification code for proof-of-possession.

  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. 証明書が正常にアップロードされたら、[確認] を選択します。 証明書の状態が [証明書] 一覧の [検証済み] 変わります。 自動的に更新されない場合は、[最新の情報に更新] を選択します。

次のステップ