X.509 クライアント証明書
X.509 証明書には、AWS IoT でクライアントとデバイスの接続を認証する機能があります。クライアントが AWS IoT と通信できるようにするには、クライアント証明書を AWS IoT に登録する必要があります。クライアント証明書を同じ AWS リージョン 内の複数の AWS アカウント に登録すると、同じリージョン内の AWS アカウント 間でデバイスの移動が可能になります。詳細については、「マルチアカウント登録による複数の AWS アカウント での X.509 クライアント証明書の使用」を参照してください。
証明書が失効した場合などにきめ細かくクライアント管理アクションを有効にできるように、各デバイスまたはクライアントで一意の証明書を指定することをお勧めします。証明書失効時にオペレーションを円滑に行うために、デバイスまたはクライアントが証明書のローテーションおよび置換に対応している必要もあります。
X.509 証明書を使用して複数のデバイスをサポートする方法については、デバイスプロビジョニング を参照して、AWS IoT がサポートするさまざまな証明書管理およびプロビジョニングオプションを確認してください。
AWS IoT は、次のタイプの X.509 クライアント証明書をサポートしています。
-
AWS IoT によって生成された X.509 証明書
-
AWS IoT に登録された CA によって署名された X.509 証明書。
-
AWS IoT に登録されていない CA によって署名された X.509 証明書。
このセクションでは、AWS IoT で X.509 証明書を管理する方法について説明します。AWS IoT コンソールまたは AWS CLI を使用して、次の証明書オペレーションを実行できます。
これらのオペレーションを実行する AWS CLI コマンドの詳細については、「AWS IoT CLI リファレンス
X.509 クライアント証明書の使用
X.509 証明書は、AWS IoT へのクライアントおよびデバイス接続を認証します。X.509 証明書には、他の識別および認証メカニズムに比べて、いくつかの利点があります。X.509 証明書では、非対称キーをデバイスで使用できます。例えば、プライベートキーをデバイス上の安全なストレージに書き込むと、デバイスから機密の暗号化情報が持ち出されることがないようにすることができます。X.509 証明書により、ユーザー名とパスワード、ベアラートークンなどの他のスキーマよりも、強力なクライアント認証が可能になります。これは、プライベートキーがデバイスから持ち出されることがないためです。
AWS IoT では、TLS プロトコルのクライアント認証モードを使用してクライアント証明書を認証します。TLS サポートは、多くのプログラミング言語とオペレーティングシステムに対応しており、データの暗号化に一般に使用されます。AWS IoT では、TLS クライアント認証時に X.509 クライアント証明書をリクエストし、証明書のレジストリに対して証明書のステータスと AWS アカウント を検証します。続いて、証明書に含まれるパブリックキーに対応するプライベートキーの所有権の証明として、クライアントにチャレンジを送ります。AWS IoT では、クライアントが Server Name Indication (SNI) 拡張機能
AWS IoT コアへの安全で一貫性のあるクライアント接続を容易にするため、X.509 クライアント証明書には以下のことが必要です。
-
AWS IoT コアに登録されている。詳細については、「クライアント証明書の登録」を参照してください。
-
ステータスは
ACTIVE状態である。詳細については、「クライアント証明書を有効または無効する」を参照してください。 -
証明書の有効期限にまだ達していない。
Amazon Root CA を使用するクライアント証明書を作成し、別の認証機関 (CA) によって署名された独自のクライアント証明書を使用できます。AWS IoT コンソールを使用して Amazon ルート CA を使用する証明書を作成する方法の詳細については、「AWS IoT クライアント証明書を作成する」を参照してください。独自の X.509 証明書の使用の詳細については、「独自のクライアント証明書を作成する」を参照してください。
CA 証明書によって署名された証明書の有効期限が切れる日付と時刻は、証明書の作成時に設定されます。AWS IoT によって生成された X.509 証明書の有効期限は、2049 年 12 月 31 日の午前 0 時 (UTC) (2049-12-31T23:59:59Z) に切れます。
AWS IoT Device Defender は、AWS アカウント と、一般的な IoT セキュリティのベストプラクティスをサポートするデバイスで、監査を実行することができます。これには、CA または Amazon Root CA によって署名された X.509 証明書の有効期限の管理が含まれます。証明書の有効期限の管理の詳細については、「デバイス証明書の有効期限切れ」および「CA 証明書の有効期限切れ」を参照してください。
AWS IoT の公式ブログでは、デバイス証明書ローテーションの管理とセキュリティのベストプラクティスについて、「 を利用して IoT デバイスの証明書の更新を管理する方法AWS IoT
マルチアカウント登録による複数の AWS アカウント での X.509 クライアント証明書の使用
マルチアカウント登録により、同じリージョン内、または異なるリージョン内の AWS アカウント 間で、デバイスの移動が可能になります。実稼働前のアカウントでデバイスを登録、テスト、設定した後、実稼働アカウントで同じデバイスとデバイス証明書を登録して使用することができます。AWS IoT に登録されている CA なしで、デバイスにクライアント証明書またはデバイス証明書を登録することもできます。詳細については、「登録していない CA によって署名したクライアント証明書を登録する (CLI)」を参照してください。
注記
マルチアカウント登録に使用される証明書は、iot:Data-ATS、iot:Data (レガシー)、iot:Jobs、および iot:CredentialProvider エンドポイントタイプでサポートされています。AWS IoT デバイスエンドポイントの詳細については、「AWS IoT デバイスデータとサービスエンドポイント」を参照してください。
マルチアカウント登録を使用するデバイスは、AWS IoT に接続するときに、サーバー名表示 (SNI) 拡張host_name フィールドに完全なエンドポイントアドレスを提供する必要があります。AWS IoT は host_name のエンドポイントアドレスを使用して接続を正しい AWS IoT アカウントにルーティングします。host_name で有効なエンドポイントアドレスを送信しなかった既存デバイスは、引き続き動作しますが、この情報を必要とする機能を使用することはできません。SNI 拡張の詳細と、host_name フィールドのエンドポイントアドレスを特定する方法については、AWS IoT Core でのトランスポートセキュリティ を参照してください。
マルチアカウント登録を使用するには
-
CA を指定してデバイス証明書を登録することができます。署名 CA を
SNI_ONLYモードで複数のアカウントに登録し、その CA を使用して同じクライアント証明書を複数のアカウントに登録できます。詳細については、「SNI_ONLY モードでの CA 証明書の登録 (CLI) – 推奨」を参照してください。 -
デバイス証明書は CA を指定せずに登録することができます。「」を参照してください登録していない CA によって署名したクライアント証明書を登録する (CLI) CA の登録はオプションです。デバイス証明書に署名した CA は AWS IoT に登録する必要はありません。
AWS IoT でサポートされている証明書署名アルゴリズム
AWS IoT では、以下の証明書署名アルゴリズムがサポートされています。
-
SHA256WITHRSA
-
SHA384WITHRSA
-
SHA512WITHRSA
-
SHA256WITHRSAANDMGF1 (RSASSA-PSS)
-
SHA384WITHRSAANDMGF1 (RSASSA-PSS)
-
SHA512WITHRSAANDMGF1 (RSASSA-PSS)
-
DSA_WITH_SHA256
-
ECDSA-WITH-SHA256
-
ECDSA-WITH-SHA384
-
ECDSA-WITH-SHA512
証明書認証およびセキュリティの詳細については、「デバイス証明書のキー品質」を参照してください。
注記
証明書署名リクエスト (CSR) にはパブリックキーを含める必要があります。キーは、少なくとも 2,048 ビット長の RSA キー、または NIST P-256、NIST P-384、NIST P-521 カーブの ECC キーとすることができます。詳細については、「AWS IoT API リファレンスガイド」の「CreateCertificateFromCsr API」を参照してください。
AWS IoT でサポートされているキーアルゴリズム
次の表は、キーアルゴリズムのサポート方法を示しています。
| [キーアルゴリズム] | 証明書署名アルゴリズム | TLS のバージョン | サポート対象? はい/いいえ |
|---|---|---|---|
| キーサイズが 2048 ビット以上の RSA | すべて | TLS 1.2 TLS 1.3 | あり |
| ECC NIST P-256/P-384/P-521 | すべて | TLS 1.2 TLS 1.3 | あり |
| キーサイズが 2048 ビット以上の RSA-PSS | すべて | TLS 1.2 | なし |
| キーサイズが 2048 ビット以上の RSA-PSS | すべて | TLS 1.3 | あり |
CreateCertificateFromCSR を使用して証明書を作成するには、サポートされているキーアルゴリズムを使用して CSR のパブリックキーを生成できます。RegisterCertificate または RegisterCertificateWithoutCA を使用して独自の証明書を登録するには、サポートされているキーアルゴリズムを使用して証明書のパブリックキーを生成できます。
詳細については、「セキュリティポリシー」を参照してください。