AWS IoT Core クレーム証明書のローテーション手順
こんにちは!コンサルティング部のくろすけです!
AWS IoT Core の Fleet Provisioning by claim では、複数のデバイスが共通のクレーム証明書を使用して初回プロビジョニングを行います。
クレーム証明書の秘密鍵に漏洩の疑いがある場合は、まず証明書を無効化して利用を停止し、状況を確認したうえで新しいクレーム証明書へ切り替える必要があります。
本記事では、AWS マネジメントコンソールを使い、クレーム証明書を無効化してから新しい証明書を発行し、旧証明書を取り消すまでの手順を紹介します。
概要
クレーム証明書は、通常のデバイス通信ではなく、デバイス固有の証明書を取得するための初回プロビジョニングに使用する証明書です。
クレーム証明書の秘密鍵に漏洩の疑いがある場合のサービス(AWS)管理・運用担当にフォーカスした、対応フローの一例は次のとおりです。
対応フローには検知、トリアージ、分析、関係部門との連携も含まれますが、本記事ではクレーム証明書の無効化、再有効化、新規発行、取り消しといったローテーションに関する手順を中心に紹介します。
ローテーション以外の対応については、手順上必要となるポイントのみ補足します。
補足事項
INACTIVEにした証明書は再有効化できますが、REVOKEDにした証明書は再有効化できません- 証明書を
ACTIVE以外へ変更すると、その証明書を使用している接続は数分以内に切断され、再接続できなくなります - 新しい証明書のプライベートキーは作成時にしかダウンロードできないため、安全な場所へ保存します
- 新しいクレーム証明書は、旧証明書を保持する未プロビジョニングデバイスへ反映します
- プロビジョニング済みデバイスでは、通常はデバイス証明書を使用するため、クレーム証明書が端末から削除されていることを前提とします
- 不正なプロビジョニングによって発行されたデバイス証明書がある場合は、クレーム証明書とは別に取り消しが必要です
手順
1. 検知
1.1. 発見
CloudWatch Alarm や関係者からの通報などにより、クレーム証明書の不審な利用を検知します。
1.2. トリアージ(旧クレーム証明書の無効化)
異常を検知したら、CloudWatch Logs (AWSiotLogsV2 で RegisterThing を検索するなど)や製造・展開担当へ作業状況などを確認します。
不正利用の可能性があり、追加調査が必要と判断した場合は、旧クレーム証明書を一時的に無効化します。
- AWS IoT Core コンソールを開く
- 「セキュリティ」の「証明書」を選択する
- 対象のクレーム証明書を選択する
- 「アクション」を選択する
- 「無効化」を選択する

- 対象のクレーム証明書を開く
- ステータスが「非アクティブ」であることを確認する

無効化後は、当該クレーム証明書を使用した新しいプロビジョニングを実行できません。
調査中は当該クレーム証明書を使用してデバイスをプロビジョニングできない旨を、製造・展開担当に共有します。
1.3. 分析(漏洩の有無と影響範囲の確認)
旧クレーム証明書を無効化した状態で、詳細な調査・分析を実施します。
- CloudWatch Logs で旧クレーム証明書の
principalId、接続元 IP アドレス、Client ID、接続時刻を確認する - Fleet Provisioning のメトリクスで想定外の登録や失敗が発生していないか確認する
- デバイス製造部門に当該クレーム証明書が保存されているデバイスを確認する
- デバイス展開部門に対象デバイスの出荷・設置状況を確認する
- 疑わしい時間帯に作成されたモノとデバイス証明書を確認する
不正に作成されたデバイス証明書が見つかった場合は、旧クレーム証明書とは別に無効化します。
対応不要の場合:旧クレーム証明書の再有効化
調査の結果、正規の製造・展開作業によるアクセスであり、漏洩していないと判断できた場合は、旧クレーム証明書を再有効化します。
漏洩の可能性を否定できない場合は再有効化せず、次の新クレーム証明書発行へ進みます。
- 「セキュリティ」の「証明書」を選択する
- 対象のクレーム証明書を選択する
- 「アクション」を選択する
- 「有効化」を選択する

- ステータスが「アクティブ」であることを確認する
- 製造・展開担当へプロビジョニングを再開できることを連携する
3. 対応
3.1. 旧クレーム証明書を取り消す
漏洩が確定している場合は、旧クレーム証明書を取り消します。
取り消しは元に戻せないため、対象の証明書 ID が正しいことを確認し、製造・展開担当へ旧証明書を使用できなくなることを連携してから実施します。
- 「セキュリティ」の「証明書」を選択する
- 旧クレーム証明書を選択する
- 「アクション」を選択する
- 「取り消し」を選択する

- 確認画面で対象の証明書 ID を確認する
- 「取り消し」を選択する

- 旧クレーム証明書のステータスが「取り消し済み」であることを確認する
- 旧証明書による新しいプロビジョニングが発生していないことを確認する
不正に発行されたデバイス証明書やモノがある場合は、影響範囲を確認したうえで取り消しや削除を行います。
4. 復旧
4.1. 新しいクレーム証明書を発行する
漏洩が確定した場合、または漏洩の可能性を否定できない場合は、新しいクレーム証明書とキーペアを発行します。
旧証明書を取り消した状態で作業を進めます。
- 「セキュリティ」の「証明書」を選択する
- 「証明書を追加」を選択する
- 「証明書を作成」を選択する

- 「新しい証明書の自動生成」を選択する
- 証明書のステータスで「アクティブ」を選択する
- 「作成」を選択する

- 「すべてダウンロード」を選択して証明書、パブリックキー、プライベートキー、ルート CA 証明書を保存する
- 「続行」を選択する

プライベートキーはこの画面でのみダウンロードできます。
保存先へのアクセスを必要な担当者に限定し、メールやチャットなどの保護されていない経路では共有しないでください。
4.2. 新しいクレーム証明書に IoT ポリシーをアタッチする
新しいクレーム証明書には、Fleet Provisioning に必要な操作だけを許可した IoT ポリシーをアタッチします。
通常のデバイス通信用トピックへのアクセス権限は付与しません。
- 新しく作成した証明書を選択する
- 「アクション」を選択する
- 「ポリシーをアタッチ」を選択する

- Fleet Provisioning 用の IoT ポリシーを選択する
- 「ポリシーをアタッチ」を選択する

クレーム証明書の IoT ポリシーでは、使用するプロビジョニングテンプレートと証明書作成用の予約済みトピックだけを許可します。
詳しくは、Fleet Provisioning による証明書を持たないデバイスのプロビジョニングを参照してください。
4.3. 新しいクレーム証明書でプロビジョニングを確認する
本番対象へ展開する前に、テスト用デバイスなどで Fleet Provisioning が完了することを確認します。
- 新しいクレーム証明書をテスト用デバイスへ安全な経路で反映する
- テスト用デバイスから Fleet Provisioning を実行する
- デバイス証明書が発行され、モノが登録されたことを確認する

- AWS IoT Core コンソールで「すべてのデバイス」の「モノ」を選択する
- 想定したモノだけが登録されていることを確認する

動作確認後、製造・管理部門に新しいクレーム証明書とプライベートキーを配布し、展開を依頼します。
旧クレーム証明書を保持する未プロビジョニングデバイスが展開の対象です。
4.4. 旧クレーム証明書を削除する
旧クレーム証明書をすぐに削除する必要はありません。
インシデント調査や監査で証明書情報が必要になる場合は、取り消した状態で所定の期間保持します。
削除する場合は、「無効化」や「取り消し」と同様の手順で削除が可能です。
まとめ
クレーム証明書に漏洩の疑いがある場合は、最初に無効化して暫定的に利用を停止します。
調査の結果、対応不要であれば再有効化し、漏洩が確定した場合や可能性を否定できない場合は、旧証明書を取り消して新しいクレーム証明書へ切り替えます。
クレーム証明書は、デバイス固有証明書を取得するための共有資格情報です。
通常はプロビジョニング済みデバイスへ定期的に配布するのではなく、未プロビジョニングデバイスの登録に使用します。
製造ロット単位で証明書を分ける、プロビジョニング完了後はデバイスから削除するなどの対応により、漏洩のリスクや影響範囲を抑えられます。
あとがき
クレーム証明書はプロビジョニング専用ですが、漏洩すると不正なデバイス登録などに利用される可能性がありますので、取り扱いには十分注意が必要です。
この記事が少しでもお役に立てば幸いです。
以上、くろすけでした!





