X.509 クライアント証明書 - AWS IoT

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) 拡張機能を Transport Layer Security (TLS) プロトコルに送信する必要があります。SNI 拡張機能の設定の詳細については、「AWS IoT でのトランスポートセキュリティ」を参照してください 。

X.509 証明書は、信頼された証明機関 (CA) に対して検証できます。Amazon ルート CA を使用するクライアント証明書を作成し、別の CA によって署名された独自のクライアント証明書を使用できます。独自の X.509 証明書の使用の詳細については、「独自のクライアント証明書を作成する」を参照してください。

CA 証明書によって署名された証明書の有効期限が切れる日付と時刻は、証明書の作成時に設定されます。AWS IoT によって生成された X.509 証明書の有効期限は、2049 年 12 月 31 日の午前 0 時 (UTC) (2049-12-31T23:59:59Z) に切れます。AWS IoT コンソールを使用して Amazon ルート CA を使用する証明書を作成する方法の詳細については、「AWS IoT クライアント証明書を作成する」を参照してください。

マルチアカウント登録による複数の AWS アカウントでの X.509 クライアント証明書の使用

マルチアカウント登録により、同じリージョン内の AWS アカウント間でデバイスの移動が可能になります。これにより、実稼働前のアカウントでデバイスを登録、テスト、設定し、実稼働アカウントで同じデバイス証明書とデバイス証明書を登録して使用することができます。また、AWS IoT に登録された CA を使用せずに、デバイスにクライアント証明書 (デバイス証明書) を登録することもできます。

注記

マルチアカウント登録に使用される証明書は、iot:Jobs または iot:CredentialProvider エンドポイントタイプでは使用できません。エンドポイントの詳細については、「describe-endpoint」または「DescribeEndpoint」を参照してください。

マルチアカウント登録を使用するデバイスは、AWS IoT への接続時に、Server Name Indication (SNI) 拡張を Transport Layer Security (TLS) プロトコルに送信し、完全なエンドポイントアドレスを host_name フィールドで指定する必要があります。AWS IoT は、host_name に指定されたエンドポイントアドレスを使用して、正しい AWS IoT アカウントに接続をルーティングします。host_name で有効なエンドポイントアドレスを送信しなかった既存デバイスは、引き続き動作しますが、この情報を必要とする機能を使用することはできません。SNI 拡張の詳細と、 host_name フィールドのエンドポイントアドレスを特定する方法については、「AWS IoT でのトランスポートセキュリティ」を参照してください。

マルチアカウント登録を使用するには

  1. デバイス証明書に署名した CA は AWS IoT に登録しないでください。

  2. デバイス証明書は CA を指定せずに登録します。「CA (CLI) を登録せずにクライアント証明書を登録する」を参照してください。

  3. デバイスを AWS IoT に接続する際には、TLS に送信する SNI 拡張で正しい host_name を使用します。「AWS IoT でのトランスポートセキュリティ」を参照してください。

AWS IoT でサポートされている証明書署名アルゴリズム

AWS IoT では、以下の証明書署名アルゴリズムがサポートされています。

  • SHA256WITHRSA

  • SHA384WITHRSA

  • SHA512WITHRSA

  • DSA_WITH_SHA256

  • ECDSA-WITH-SHA256

  • ECDSA-WITH-SHA384

  • ECDSA-WITH-SHA512