Certificate Provisioning API

Certificate Provisioning API を使用すると、認証局を ChromeOS クライアント証明書のプロビジョニングと統合できます。

ChromeOS 管理者は、ChromeOS デバイスまたは ChromeOS ユーザーを構成して、外部認証局からクライアント証明書をリクエストできます。認証局は、証明書プロビジョニング アダプター(Google Cloud Certificate Connector(GCCC)など)を介して Certificate Provisioning API とやり取りします。各証明書プロビジョニング アダプタは、Pub/Sub を介して新しい証明書プロビジョニング リクエストに関する通知を受信し、Certificate Provisioning API を使用して、証明書をリクエストしている ChromeOS デバイスまたは ChromeOS ユーザーとやり取りします。

このサービスは、次の主なコンセプトに基づいて動作します。

  • クライアント証明書は、ChromeOS デバイスまたは ChromeOS ユーザーに対して発行される X.509 デジタル証明書です。鍵ペアはデバイス上で生成され、秘密鍵はデバイス外に送信されることはありません。
  • 証明書のプロビジョニング プロセス(リソース CertificateProvisioningProcess で表されます)は、クライアント証明書のプロビジョニング プロセスを記述します。証明書をリクエストするクライアントは、ChromeOS デバイスまたは ChromeOS ユーザーです。
  • 証明書のプロビジョニング プロファイルは、クライアント証明書の管理者の構成を記述します。クライアントには、クライアントに適用されるプロファイルごとに証明書がプロビジョニングされます。

証明書のプロビジョニング プロセスの一般的なフロー:

  • クライアントがクライアント証明書プロファイルを取得すると、証明書のプロビジョニング プロセスが開始されます。このプロセスは、証明書のプロビジョニング リソースに関連付けられています。
  • 関連する Pub/Sub トピックにサブスクライブされている各証明書プロビジョニング アダプタは、新しい証明書プロビジョニング プロセスについて通知されます。Pub/Sub 通知には、証明書のプロビジョニング プロセスの一意の ID を伝達する CertificateProvisioningPubsubNotification proto メッセージが含まれています。
  • 各証明書プロビジョニング アダプターは、証明書プロビジョニング プロセス リソースにアクセスできます。get メソッドをご覧ください。
  • 複数のアダプター インスタンスを並列で実行し、同じ証明書のプロビジョニング プロセスを同時に要求できます。claim メソッドをご覧ください。ただし、クレーム メソッドは 1 つのアダプター インスタンスでのみ成功し、そのアダプター インスタンスは証明書のプロビジョニング プロセスの残りの手順も処理する必要があります。
  • 証明書プロビジョニング アダプタは、クライアントの秘密鍵を使用して生成された暗号署名をリクエストできます。signData メソッドをご覧ください。このメソッドは、長時間実行のオペレーションを返します。
  • 証明書プロビジョニング アダプタは、長時間実行オペレーションのステータスを定期的に取得します(get メソッドを参照)。
  • 証明書プロビジョニング アダプタは、証明書プロビジョニング プロセス用の証明書をアップロードします。uploadCertificate メソッドをご覧ください。この証明書は ChromeOS クライアントによってインポートされます。
  • 証明書のプロビジョニング プロセス全体で、アダプターは証明書のプロビジョニング プロセスを失敗としてマークできます。setFailure メソッドをご覧ください。ChromeOS クライアントの証明書設定ページに、指定されたエラー メッセージが表示されます。クライアントは、24 時間後やデバイスの再起動後など、特定のタイミングで証明書のプロビジョニング プロセスを再試行します。

初期の Pub/Sub メッセージ形式

新しい証明書のプロビジョニング プロセスを通知するために証明書プロビジョニング アダプタに送信される最初の Pub/Sub メッセージは、次の形式に従います。

message CertificateProvisioningProcessCreatedEventData {
  // Unique ID of the certificate provisioning process.
  string certificate_provisioning_process_id = 1;

  // The customer ID to which the client of the certificate provisioning process
  // belongs.
  string customer_id = 2;
}

// Content of the pubsub message that is sent to the adapter to notify it about
// a new event that should be handled.
message CertificateProvisioningPubsubNotification {
  oneof event {
    // Event data of the certificate provisioning process that was created.
    CertificateProvisioningProcessCreatedEventData
        certificate_provisioning_process_created_event_data = 1;
  }
}

API メソッドの概要

URL は https://chromemanagement.googleapis.com/v1/customers/{customer_id} に対する相対パスです。

説明 相対 URL HTTP メソッド
証明書のプロビジョニング プロセスを取得する /certificateProvisioningProcess/{certificate_provisioning_process_id} GET
証明書のプロビジョニング プロセスを申請する /certificateProvisioningProcess/{certificate_provisioning_process_id}:claim POST
暗号署名をリクエストする /certificateProvisioningProcess/{certificate_provisioning_process_id}:signData POST
証明書をアップロードする /certificateProvisioningProcess/{certificate_provisioning_process_id}:uploadCertificate POST
証明書のプロビジョニング プロセスを失敗としてマークする /certificateProvisioningProcess/{certificate_provisioning_process_id}:setFailure POST
署名データの取得の長時間実行オペレーション /certificateProvisioningProcess/{certificate_provisioning_process_id}/operations/{operation_id} GET

リクエストとレスポンスの例については、コードサンプルをご覧ください。

API スコープ

Chrome Management API には、次の OAuth スコープが必要です。

https://www.googleapis.com/auth/chrome.management.certprov.provisioningprocess

詳細については、認証の概要をご覧ください。