シナリオ: mTLS証明書を使用するデジタル・ツイン・インスタンスの作成
デバイスからデータを受信する場合は、デジタル・ツイン・インスタンスで認証を使用する必要があります。このシナリオでは、デバイスのデジタル・ツイン・インスタンスを作成するときに、証明書を使用して認証する方法について説明します。
- 証明書を頻繁にローテーションします。
- 証明書の有効期間を制限します。
- Vaultsを使用して秘密キーを格納します。
- 接続の試行を監視および監査します。
開始する前に
必要な権限があることを確認してください。管理者は、必要なポリシーを作成してアクセス権を付与します。詳細は、前提条件およびInternet of Things (IoT)プラットフォームのポリシー詳細を参照してください。
ステップ1: 認証局の作成
証明書サービスを使用して、ルート認証局(CA)または下位CAを作成します。詳細は、認証局の作成を参照してください。
CAを作成するには、Oracle Cloud Infrastructure (OCI) Vaultサービスからハードウェアで保護された既存の非対称暗号化キーにアクセスできる必要があります。詳細は、ボールトの概要を参照してください。
このタスク例では、下位CAを使用して外部で管理する秘密キーを使用して証明書を発行する方法について説明します。
従属CAを作成するには、すでにルートCAが必要です。
- これらのアクションを実行するための正しいポリシーで管理者としてログインします。CAを作成するには、適切なレベルのセキュリティ・アクセス権が必要です。詳細は、必要なIAM方針に関する項を参照してください。
- 「認証局」リスト・ページで、「認証局の作成」を選択します。リスト・ページの検索に関するヘルプが必要な場合は、認証局のリストを参照してください。
- 「コンパートメント」を選択し、CAを作成するコンパートメントを選択します。
- 「認証局タイプ」で、「下位認証局」タイプ(他のCAを含む階層内のルートCAではないCA)を選択します。
- (オプション) CAの一意の表示名前を入力します。この名前を使用すると、管理目的でCAを識別できますが、CA証明書の一部として表示されません。機密情報を入力しないでください。ノート
テナンシ内の2つのCAは、削除保留中のCAを含め、同じ名前を共有できません。 - (オプション)タグを適用するには、「タグ付けオプションの表示」を選択します。タグの詳細は、リソース・タグを参照してください。
- 「次へ」を選択します。
- 件名情報を入力します。サブジェクト情報には、少なくともCA証明書の所有者を識別するための共通名(CN)が含まれます。証明書の使用目的に応じて、サブジェクトは個人、組織、コンピュータ・エンドポイントまたはデバイスを識別します。サブジェクト情報の形式は、RFC 5280標準に準拠している必要があります。ワイルドカードを使用して、複数のドメイン名またはサブドメイン名の証明書を発行できます。
- 「次へ」を選択します。
- 「認可構成」で、CA証明書に使用する暗号化キーを含むボールトを確認または選択します。オプションで、「コンパートメントの変更」を選択して別のコンパートメントを指定します。ボールトの作成と管理の詳細は、「ボールトの管理」を参照してください。
- 「キー」で、使用するボールト内のキーをクリックします。証明書では非対称キーのみがサポートされるため、リストにはボールト内の非対称キーのみが含まれます。Rivest-Shamir-Adleman(RSA)キーから、2,048ビットまたは4,096ビットを選択できます。また、楕円曲線IDがNIST_P384の楕円曲線暗号デジタル署名アルゴリズム(ECDSA)キーを選択することもできます。具体的に言うと、このリストには、ハードウェア・セキュリティ・モジュール(HSM)によって保護されているこれらのタイプの非対称キーのみが含まれます。証明書では、ソフトウェア保護されたキーの使用はサポートされません。キーの作成および管理の詳細は、キーの管理を参照してください。
- 「署名アルゴリズム」で、キー・アルゴリズム・ファミリに応じて、次のいずれかのオプションを選択します。
- SHA256_WITH_RSA: SHA-256ハッシュ関数を使用したRSSAキー
- SHA384_WITH_RSA: SHA-384ハッシュ関数を使用したRSSAキー
- SHA512_WITH_RSA: SHA-512ハッシュ関数を使用したRSSAキー
- SHA256_WITH_ECDSA: SHA-256ハッシュ関数を使用したECDSAキー
- SHA384_WITH_ECDSA: SHA-384ハッシュ関数を使用したECDSAキー
- SHA512_WITH_ECDSA: SHA-512ハッシュ関数を使用したECDSAキー
- 「次へ」を選択します。
- 有効期限ルールを構成します。「証明書の最大有効期間(日数)」で、このCAによって発行された証明書を有効化できる最大日数を指定します。有効期間は90日以内にすることを強くお薦めします。
- 「失効構成」ページで、証明書失効リスト(CRL)を構成しない場合は、「失効のスキップ」チェック・ボックスを選択します。
- 「次へ」を選択します。
- 情報が正しいことを確認し、「認証局の作成」を選択します。証明書関連のリソースの作成には数分かかる場合があります。
- 認証局が正常に作成された場合は、サマリーの詳細が表示されます。
ステップ2: 新しい秘密キーの生成
OpenSSLを使用して、秘密キーと証明書署名リクエスト(CSR)を作成します。
セキュリティのため、キーを非公開にし、外部でキーを共有しないように、デバイスでこのステップを実行することを検討してください。
- このコマンドを使用して、新しい秘密キー
private.pemと、RSA 2048ビット暗号化を使用した証明書署名リクエストcsr.pemを生成します。この例では、パスワード保護なしで指定し、v3_req拡張子を使用する-nodesパラメータの使用方法を示します。openssl req -nodes -newkey rsa:2048 -keyout private.pem -out csr.pem -extensions v3_req この例は、証明書リクエストの入力フィールドと値の例を示しています。証明書レポートに組み込む情報を識別名(DN)として入力します。
共通名を入力します。共通名は、「証明書の詳細」ページの「サブジェクト情報」タブ、ステップ8の「認証局の作成」を参照するか、証明書の詳細ページの検索方法については、「証明書のリスト」を参照してください。Country Name (2 letter code) []: US State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) []: Organizational Unit Name (eg, section) []: Common Name (Enter common name from the certificate details.) []:common-name Email Address [your@email.com]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
ステップ3: 外部で管理される証明書の作成
証明書をインストールする予定のサーバーで証明書署名リクエスト(CSR)と秘密キーを生成してから、そのCSLをCAに送信し、証明書を発行することもできます。この場合、秘密キーは外部で管理します。
- コンソールで、ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。
- 「証明書」リスト・ページに、特定のコンパートメントの認証局のリストが表示されます。
- 作業する証明書を検索し、行の最後にある「アクション」メニューを選択します。
- 「発行証明書」を選択します。
- 「証明書タイプ」で、外部のサード・パーティCAによって管理される証明書サービスのCAから証明を発行するには、「内部CAによって発行され、外部に管理」を選択します。
- 証明書の一意の表示名前を入力します。機密情報を入力しないでください。ノート
テナンシ内の2つの証明書が同じ名前(削除保留中の証明書を含む)を共有することはできません。 - (オプション) 説明を入力して、証明書を識別しやすくします。機密情報を入力しないでください。
- サードパーティCAが管理する証明書の場合、サブジェクト情報を指定する必要はありません。かわりに、「次へ」を選択します。
- 「証明書署名リクエスト」で、「ファイルのアップロード」を選択して証明書の内容を指定し、「1つ選択」を選択して証明書を
PEM形式のファイルとしてのアップロードします。 - または、「コンテンツの貼付け」を選択し、テキスト・ボックスを選択して証明書の内容を直接貼り付けます。
- 「次へ」を選択します。
- 証明書サービスで管理されない証明書の自動更新は構成できません。「次へ」を選択して続行します。
- サマリー情報が正しいことを確認し、「証明書の作成」を選択します。
- 「証明書の詳細」ページがオープンします。「バージョン」で、表示する証明書の名前を検索し、行の最後にある「アクション」メニューに移動して、「コンテンツの表示」を選択します。詳細は、証明書の詳細の表示を参照してください。
- 「証明書PEM」と「証明書チェーンPEM」の両方で、「ダウンロード」と「保存」を選択してファイルを保存します。
- 証明書の詳細ページで、「サブジェクト情報」タブに移動し、次のステップで使用する証明書の「共通名」をコピーします。
ステップ4: 証明書を使用するデジタル・ツイン・インスタンスの作成
データを送信するデバイスを認証するには、前のステップで作成した--auth-idパラメータおよび<certificate-OCID>を使用して、デジタル・ツイン・インスタンスを作成します。
このコマンドおよびパラメータを使用して、デジタル・ツイン・インスタンスを作成します。<common-name-for-the-certificate>を置き換えます。<certificate-OCID>を環境の証明書OCIDに置き換えます。証明書の詳細でこれらの値を検索します。詳細は、証明書の詳細の表示を参照してください:
iot digital-twin-instance create --iot-domain-id <iot-domain-OCID> --auth-id <certificate-OCID> --external-key <common-name-from-certificate-details>
CLIパラメータの完全なリストは、oci iot digital-twin-instance createおよびデジタル・ツイン・インスタンスの作成を参照してください。
オプションのステップ5: デジタル・ツインのインスタンスの詳細の取得
oci iot digital-twin-instance get --digital-twin-instance-id <digital-twin-instance-OCID>ステップ6: MQTTxを使用したトピックのサブスクライブ
シナリオに応じて、MQTT、HTTP、またはWebSocketを使用してデジタル・ツイン・インスタンスに接続できます。この例では、MQTTXを使用して接続する方法を示しています。シナリオの例は、Connecting a Deviceを参照してください。
接続をテストするには、次のようにします。
- 次のように、ホストとしてデバイスホストを入力します。
mqtts://<domain-short-id>.device.iot.<region>.oci.oraclecloud.com - ポート
8883を入力します。 - クライアントID: your-client-ID
- クリーン・スタート: True
- トグルをオンにすると、TLSが有効になります。
- オプション「CAまたは自己署名証明書」を選択します。
- 「外部で管理される証明書の作成」のステップ15から、クライアント証明書ファイルの場所を入力します:
your-certificate.pem - 「新規秘密キーの生成」のステップ1から、クライアント・キー・ファイルの場所を入力します:
your-private-key.pem - 「接続」を選択します。


- デバイスからデータを受信するには、「新規サブスクリプション」を選択します。
- 「トピック」としてエンドポイントを入力します。
- 次の例は、Quality of Service (QoS)レベル1の
/endpoints/4321トピックにパブリッシュされたメッセージを示しています。トピック:{ "pulse": 300, "s02": 400 }{ "test": 100 }
オプションのステップ7: APEXでのIoTデータのモニター
select * from <domain-short-id-from-device-host>__IOT.RAW_DATA
where digital_twin_instance_id = '<digital-twin-instance-ocid>'