認証局

Things Cloud には認証局(CA)が含まれており、次の機能を提供します。

  • 署名証明書の管理
  • 証明書署名要求(CSR)の受け入れ
  • 各テナントで定義された正当性チェックの実行
  • デバイステナントに信頼される署名済み X.509 証明書の発行

Things Cloud の CA サービスは、デバイスと CA サービス間のやり取りがシンプルであることから、EST プロトコルに基づいています。次の REST API エンドポイントは、デバイス証明書のプロビジョニングと更新をサポートします。

  • /.well-known/est/simpleenroll は、デバイスが新しい証明書を取得するために使用します。デバイスは、BasicAuth の realm、ユーザー、パスワードとして、テナント、識別子、セキュリティトークンを使用して自分自身を認証する必要があります。これらのテナント、識別子、セキュリティトークンは Things Cloud と共有されている必要があります。
  • /.well-known/est/simplereenroll は、デバイスが証明書を更新する、または証明書を置き換えるために使用します。デバイスは、パスワードまたは JWT トークン(MQTT 上で自身の証明書を使用して取得)を使用して自分自身を認証する必要があります。
注意

Public Preview から General Availability への移行 - 対応が必要です。

General Availability への移行の一環として、Public Preview 配下で登録したすべてのデバイスを削除し、再登録する必要があります。これらのデバイスは引き続き接続できますが、再登録されるまで証明書ライフサイクル管理の他の機能は利用できません。

Things Cloud の証明書管理により、Things Cloud は証明書に署名して発行できます。

Things Cloud により署名された証明書は、テナントの認証局(CA)証明書のリストに、トラストアンカー証明書とともに表示されます。このリストでは、Things Cloud により署名された証明書は、TENANT CA という語で識別できます。

このセクションでは、Things Cloud を使用してテナントの認証局(CA)を作成する方法を説明します。

前提条件

認証局 API を使用するには、この機能をテナントレベルで有効にする必要があります。デフォルトでは有効になっています。次の API を使用して、テナントで機能が有効かどうかを確認できます。

GET /features/certificate-authority
Content-Type: application/json
Authorization: Basic <<Base64 encoded bootstrap credentials>>

HTTP 200 応答で active: false が返ってきた場合、この機能はテナントで無効になっています。

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: ...
{
    "phase":"PUBLIC_PREVIEW",
    "active":false,
    "strategy":"TENANT",
    "key":"certificate-authority"
}

テナントでこの機能を有効にする方法は 2 つあります。

ロール ROLE_TENANT_MANAGEMENT_ADMIN を持つテナント管理者は、次の API を使用できます。

PUT /features/certificate-authority/by-tenant
Content-Type: application/json
Authorization: Basic <<Base64 encoded bootstrap credentials>>
...
{
   "active": true
}

ロール ROLE_TENANT_MANAGEMENT_ADMIN を持つユーザーで マネジメントテナント にアクセスできる運用チーム担当者は、次の API を使用して任意のサブテナントでこの機能を有効にできます。

PUT /features/certificate-authority/by-tenant/{{tenantId}}
Content-Type: application/json
Authorization: Basic <<Base64 encoded bootstrap credentials>>
...
{
   "active": true
}

REST による CA 証明書の作成

テナントの新しい CA 証明書を作成するには、認証局 API を呼び出す必要があります。これにより次のアクションがトリガーされます。

  • 新しい鍵ペアが作成され、Common Name(CN)として tenantID を使用して証明書が自己署名されます。
  • 秘密鍵は暗号化されたテナントオプションに保存されます。
  • 証明書は、デフォルトで自動登録がオンになった状態で信頼済み証明書リポジトリに保存されます。デバイスは、管理者がこのオプションをオンにした場合にのみ自動的に登録できます。
  • CA がすでに存在する場合、対応するメッセージが返されます。
  • CA が信頼済み証明書リストから削除された場合、対応する秘密鍵はデータベースコレクションから削除されます。

以下は REST リクエストの例です。

POST /certificate-authority
Content-Type: application/json
Authorization: Basic <<Base64 encoded bootstrap credentials>>

次のレスポンスが返されます。

HTTP/1.1 201 OK
Content-Type: application/json
Content-Length: ...
{
    ......
    "subject":"CN={tenantId}, O=Cumulocity",
    "tenantCertificateAuthority":true,
    "autoRegistrationEnabled":true,
    "status":"ENABLED"
    ....
}

この証明書は TENANT CA として識別され、属性 "tenantCertificateAuthority":true を持ちます。

備考
/certificate-authority を呼び出すには、ロールに「Tenant」(API 文字列 = ROLE_TENANT_ADMIN)または「Tenant management」(API 文字列 = ROLE_TENANT_MANAGEMENT_ADMIN)の ADMIN 権限が含まれている必要があります。これがない場合、リクエストは失敗します(HTTP 403 エラー)。

UI による CA 証明書の作成

認証局機能が無効な場合、ボタン CA 証明書を追加 は表示されません。

CA is disabled

有効化するには、前提条件 の手順に従ってください。機能を有効にすると、UI にボタン CA 証明書を追加 が表示されます。

CA is enabled

  1. デバイス管理アプリケーションで、ナビゲータの 管理 メニューに移動し、信頼済み証明書 を選択します。
  2. 右上の CA 証明書を追加 をクリックして CA 証明書を作成します。
  3. CA が作成されると、テナントあたり 1 つの CA しか許可されていないため、CA 証明書を追加 ボタンと API の両方が無効になります。証明書を置き換えたい場合は、現在の CA を削除する必要があります。

新しい CA 証明書は信頼済み証明書リストに追加されます。

Trusted CA certificate added

CA 証明書の自動更新

テナント認証局(CA)は、毎年 10 月 2 日の午前 02:00 に自動的に更新されます。更新プロセスにより、既存のデバイス証明書は有効期限まで有効なままであることが保証されます。この自動更新の仕組みにより、セキュリティとコンプライアンスを維持しながら、証明書管理の中断を防ぎます。 自動更新に失敗した場合、更新は API 経由でも実行できますが、それは現在の認証局(CA)の有効期限までの残りが 24 か月未満の場合に限ります。

以下は REST リクエストの例です。

POST /certificate-authority/renew
Content-Type: application/json
Authorization: Basic <<Base64 encoded bootstrap credentials>>

次のレスポンスが返されます。

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: ...
{
    ......
    "subject":"CN={tenantId}, O=Cumulocity",
    "tenantCertificateAuthority":true,
    "autoRegistrationEnabled":true,
    "status":"ENABLED"
    ....
}
備考
/certificate-authority/renew を呼び出すには、次のいずれかのロールが必要です: ROLE_TENANT_MANAGEMENT_ADMIN または ROLE_TENANT_ADMIN。そうでない場合、HTTP レスポンス 403 が返されます。
  • 各 CA 証明書の有効期間は 1095 日(3 年)で、バックグラウンドで自動更新されます。
  • すべての CA メタデータ、秘密鍵、および公開鍵は変更されず、シームレスな更新プロセスが保証されます。変更されるのは NotAfterNotBefore のみです。
  • CA により発行されるデバイス証明書は、発行日から 1 年の有効期間を維持し、新しいデバイス証明書も中断なく発行できます。
  • CA 証明書の有効期限が近い場合、この証明書に対して UI にエラーバナーが表示されます。
  • CA 証明書が更新されたときと、更新がまだ不要であると判断されたときの両方で監査ログが生成されます。