CA 証明書の管理 - AWS IoT Core

CA 証明書の管理

このセクションでは、独自の認証局 (CA) 証明書を管理するための一般的なタスクについて説明します。

AWS IoT が認識しない CA によって署名されたクライアント証明書を使用している場合は、AWS IoT で認証局 (CA) を登録できます。

クライアントが最初の接続時に AWS IoT にクライアント証明書を自動的に登録する場合は、クライアント証明書に署名した CA を AWS IoT に登録する必要があります。それ以外の場合は、クライアント証明書に署名した CA 証明書を登録する必要はありません。

注記

CA 証明書は、リージョン内の 1 つのアカウントでのみ DEFAULT モードで登録できます。CA 証明書は、リージョン内の複数のアカウントで SNI_ONLY モードで登録できます。

CA 証明書を作成する

CA 証明書がない場合は、OpenSSL v1.1.1i ツールを使用して作成できます。

注記

AWS IoT コンソールでは、この手順を実行できません。

OpenSSL v1.1.1i ツールを使用して CA 証明書を作成するには
  1. キーペアを生成します。

    openssl genrsa -out root_CA_key_filename.key 2048
  2. キーペアのプライベートキーを使用して CA 証明書を生成します。

    openssl req -x509 -new -nodes \ -key root_CA_key_filename.key \ -sha256 -days 1024 \ -out root_CA_cert_filename.pem

CA 証明書の登録

次の手順では、Amazon の CA ではない認証機関 (CA) から証明書を登録する方法について説明します。AWS IoT Core では、証明書の所有権を確認するために、CA 証明書を使用します。Amazon の CA ではない CA によって署名されたデバイス証明書を使用するには、デバイス証明書の所有権を確認できるように、その CA の証明書を AWS IoT Core に登録する必要があります。

CA 証明書の登録 (コンソール)

注記

コンソールで CA 証明書を登録するには、[Register CA certificate] (CA 証明書の登録) をコンソールで開始します。CA はマルチアカウントモードで登録でき、検証証明書を提供したり、プライベートキーにアクセスしたりする必要はありません。マルチアカウントモードでは、同一 AWS リージョン 内の複数の AWS アカウント で CA を登録することができます。検証証明書と CA のプライベートキーの所有権の証明を提供することで、CA をシングルアカウントモードで登録できます。

CA 証明書の登録 (CLI)

CA 証明書を DEFAULT モードまたは SNI_ONLY モードで登録できます。DEFAULT モードでは、1 つの AWS リージョン に 1 つの AWS アカウント で CA を登録できます。SNI_ONLY モードでは、同一の AWS リージョン に複数の AWS アカウント で CA を登録できます。CA 証明書の詳細については、「certificateMode」を参照してください。

注記

CA を SNI_ONLY モードで登録することをお勧めします。認証証明書やプライベートキーへのアクセス権を提供する必要はなく、同じ AWS リージョン で複数の AWS アカウント により CA を登録できます。

SNI_ONLY モードでの CA 証明書の登録 (CLI) – 推奨

前提条件

続行する前に、コンピュータで次のものが揃っていることを確認してください。

  • ルート CA の証明書ファイル (次の例では root_CA_cert_filename.pem と表記します)

  • OpenSSL v1.1.1i またはそれ以降

AWS CLI を使用して CA 証明書を SNI_ONLY モードで登録するには
  1. AWS IoT に CA 証明書を登録します。register-ca-certificate コマンドを使用して、CA 証明書ファイル名を入力します。詳細については、「AWS CLI コマンドリファレンス」の「register-ca-certificate」を参照してください。

    aws iot register-ca-certificate \ --ca-certificate file://root_CA_cert_filename.pem \ --certificate-mode SNI_ONLY

    成功した場合、このコマンドは certificateId を返します。

  2. この時点で、CA 証明書は AWS IoT に登録されていますが、アクティブではありません。CA 証明書によって署名されたクライアント証明書を登録できるようにするには、CA 証明書をアクティブにする必要があります。

    このステップにより CA 証明書がアクティブ化されます。

    CA 証明書をアクティブ化するには、次のように update-certificate コマンドを使用します。詳細については、「AWS CLI コマンドリファレンス」の「update-certificate」を参照してください。

    aws iot update-ca-certificate \ --certificate-id certificateId \ --new-status ACTIVE

CA 証明書のステータスを表示するには、describe-ca-certificate コマンドを使用します。詳細については、「AWS CLI コマンドリファレンス」の「describe-ca-certificate」を参照してください。

DEFAULT モードでの CA 証明書の登録 (CLI)

前提条件

続行する前に、コンピュータで次のものが揃っていることを確認してください。

  • ルート CA の証明書ファイル (次の例では root_CA_cert_filename.pem と表記します)

  • ルート CA 証明書のプライベートキーファイル (次の例では root_CA_key_filename.key と表記します)

  • OpenSSL v1.1.1i またはそれ以降

AWS CLI を使用して CA 証明書を DEFAULT モードで登録するには
  1. get-registration-code を使用して、AWS IoT から登録コードを取得します。プライベートキー検証証明書の Common Name として使用するために、返された registrationCode を保存します。詳細については、「AWS CLI コマンドリファレンス」の「get-registration-code」を参照してください。

    aws iot get-registration-code
  2. プライベートキー検証証明書のキーペアを生成します。

    openssl genrsa -out verification_cert_key_filename.key 2048
  3. プライベートキー検証証明書の証明書署名リクエスト (CSR) を作成します。証明書の Common Name フィールドに、registrationCode によって返された get-registration-code を設定します。

    openssl req -new \ -key verification_cert_key_filename.key \ -out verification_cert_csr_filename.csr

    証明書に関するいくつかの情報 (例: Common Name) の入力を求められます。

    You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: State or Province Name (full name) []: Locality Name (for example, city) []: Organization Name (for example, company) []: Organizational Unit Name (for example, section) []: Common Name (e.g. server FQDN or YOUR name) []:your_registration_code Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
  4. CSR を使用して、プライベートキー検証証明書を作成します。

    openssl x509 -req \ -in verification_cert_csr_filename.csr \ -CA root_CA_cert_filename.pem \ -CAkey root_CA_key_filename.key \ -CAcreateserial \ -out verification_cert_filename.pem \ -days 500 -sha256
  5. AWS IoT に CA 証明書を登録します。次のように、CA 証明書のファイル名とプライベートキー検証証明書のファイル名を register-ca-certificate コマンドに渡します。詳細については、「AWS CLI コマンドリファレンス」の「register-ca-certificate」を参照してください。

    aws iot register-ca-certificate \ --ca-certificate file://root_CA_cert_filename.pem \ --verification-cert file://verification_cert_filename.pem

    成功した場合、このコマンドは certificateId を返します。

  6. この時点で、CA 証明書は AWS IoT に登録されていますが、アクティブではありません。CA 証明書によって署名されたクライアント証明書を登録できるようにするには、CA 証明書をアクティブにする必要があります。

    このステップにより CA 証明書がアクティブ化されます。

    CA 証明書をアクティブ化するには、次のように update-certificate コマンドを使用します。詳細については、「AWS CLI コマンドリファレンス」の「update-certificate」を参照してください。

    aws iot update-ca-certificate \ --certificate-id certificateId \ --new-status ACTIVE

CA 証明書のステータスを表示するには、describe-ca-certificate コマンドを使用します。詳細については、「AWS CLI コマンドリファレンス」の「describe-ca-certificate」を参照してください。

コンソールに CA 証明書を登録するための CA 検証証明書を作成する

注記

この手順は、AWS IoT コンソールから CA 証明書を登録している場合にのみ使用します。

AWS IoT コンソールからこの手順に進んでいない場合は、CA 証明書の登録 の CA 証明書の登録プロセスをコンソールで開始します。

続行する前に、同じコンピュータで次のものが揃っていることを確認してください :

  • ルート CA の証明書ファイル (次の例では root_CA_cert_filename.pem と表記します)

  • ルート CA 証明書のプライベートキーファイル (次の例では root_CA_key_filename.key と表記します)

  • OpenSSL v1.1.1i またはそれ以降

コマンドラインインターフェイスを使用して CA 検証証明書を作成し、コンソールに CA 証明書を登録するには
  1. verification_cert_key_filename.key を、作成する検証証明書のキーファイルのファイル名 (例えば verification_cert.key など) で置き換えます。次にこのコマンドを実行して、プライベートキー検証証明書のキーペアを生成します。

    openssl genrsa -out verification_cert_key_filename.key 2048
  2. verification_cert_key_filename.key をステップ 1 で作成したキーファイルの名前で置き換えます。

    verification_cert_csr_filename.csr を作成する証明書署名リクエスト (CSR) ファイルの名前で置き換えます。例えば、verification_cert.csr と指定します。

    このコマンドを実行して、CSR ファイルを作成します。

    openssl req -new \ -key verification_cert_key_filename.key \ -out verification_cert_csr_filename.csr

    このコマンドでは、後で説明する追加情報の入力を求めるプロンプトが表示されます。

  3. AWS IoT コンソールの [Verification certificate] (検証証明書) コンテナで、登録コードをコピーします。

  4. openssl コマンドが入力を求める情報を以下の例に示します。Common Name フィールド以外では、独自の値を入力することも、空白のままにすることもできます。

    Common Name フィールドに、前のステップでコピーした登録コードを貼り付けます。

    You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: State or Province Name (full name) []: Locality Name (for example, city) []: Organization Name (for example, company) []: Organizational Unit Name (for example, section) []: Common Name (e.g. server FQDN or YOUR name) []:your_registration_code Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:

    終了すると、コマンドによって CSR ファイルが作成されます。

  5. verification_cert_csr_filename.csr を前のステップで使用した verification_cert_csr_filename.csr で置き換えます。

    root_CA_cert_filename.pem を登録する CA 証明書のファイル名で置き換えます。

    root_CA_key_filename.key を CA 証明書のプライベートキーファイルのファイル名で置き換えます。

    verification_cert_filename.pem を作成する検証証明書のファイル名で置き換えます。例えば、verification_cert.pem と指定します。

    openssl x509 -req \ -in verification_cert_csr_filename.csr \ -CA root_CA_cert_filename.pem \ -CAkey root_CA_key_filename.key \ -CAcreateserial \ -out verification_cert_filename.pem \ -days 500 -sha256
  6. OpenSSL コマンドが完了したら、コンソールに戻ったときにこれらのファイルを使用できるようになります。

    • CA 証明書ファイル (前のコマンドで使用した root_CA_cert_filename.pem)

    • 前のステップで作成した検証証明書 (前のコマンドで使用した verification_cert_filename.pem)

CA 証明書の非アクティブ化

認証局 (CA) 証明書でクライアント証明書の自動登録が有効になっている場合、AWS IoT は CA 証明書をチェックして、CA が ACTIVE であることを確認します。CA 証明書が INACTIVE の場合、AWS IoT はクライアント証明書の登録を許可しません。

CA 証明書を INACTIVE に設定すると、CA によって発行された新しいクライアント証明書が自動的に登録されなくなります。

注記

疑わしい CA 証明書によって署名された登録済みのクライアント証明書は、明示的にそれぞれのクライアント証明書が取り消されるまで、引き続き使用されます。

CA 証明書の非アクティブ化 (コンソール)

AWS IoT コンソールを使用して CA 証明書を非アクティブ化するには
  1. AWS Management Console にサインインして、AWS IoT コンソール を開きます。

  2. 左のナビゲーションペインで、[安全性]、[CA] の順に選択します。

  3. 認証局の一覧で、非アクティブ化する認証局を探し、省略記号のアイコンを選択してオプションメニューを開きます。

  4. オプションメニューで、[無効化] を選択します。

認証局は、リストに [非アクティブ] と表示されます。

注記

AWS IoT コンソールには、非アクティブ化した CA によって署名された証明書を一覧表示する方法はありません。これらの証明書を一覧表示する AWS CLI オプションについては、CA 証明書の非アクティブ化 (CLI) を参照してください。

CA 証明書の非アクティブ化 (CLI)

AWS CLI には、CA 証明書を非アクティブ化するための update-ca-certificate コマンドが用意されています。

aws iot update-ca-certificate \ --certificate-id certificateId \ --new-status INACTIVE

list-certificates-by-ca コマンドを使用して、指定した CA によって署名されたすべての登録済みクライアント証明書のリストを取得します。指定した CA 証明書によって署名されたクライアント証明書ごとに、update-certificate コマンドを使用します。これによってクライアント証明書が失効し、使用できなくなります。

CA 証明書のステータスを表示するには、describe-ca-certificate コマンドを使用します。