ApsaraMQ for MQTT では、デバイス証明書を使用してクライアントからのアクセスを認証できます。このトピックでは、CA 証明書を使用してデバイス証明書を発行する方法について説明します。また、ApsaraMQ for MQTT コンソールでデバイス証明書をクエリ、アクティブ化、登録解除、削除するなどの管理方法についても説明します。
背景情報
デバイス証明書とは、認証局(CA)のルート証明書によってクライアントに発行されるデジタル証明書です。 ApsaraMQ for MQTT クライアントを ApsaraMQ for MQTT ブローカーに接続すると、ブローカーはデバイス証明書を使用してクライアントを認証します。クライアントが認証に合格すると、クライアントとブローカーは、デバイス証明書の暗号化された秘密鍵に基づいて相互に通信できます。クライアントが認証に失敗した場合、クライアントからのアクセス要求は拒否されます。
デバイス証明書を発行した CA 証明書が ApsaraMQ for MQTT ブローカーに登録された後にのみ、デバイス証明書を使用できます。詳細については、「CA 証明書の登録」をご参照ください。
CA 証明書がデバイス証明書と一致する場合、クライアントは認証に合格し、システムはデバイス証明書を ApsaraMQ for MQTT ブローカーに自動的に登録します。
制限事項
デバイス証明書は、ApsaraMQ for MQTT Enterprise Platinum Edition インスタンスでのみ管理できます。
ApsaraMQ for MQTT ブローカーに登録されているデバイス証明書のみ管理できます。
デバイス証明書のシリアル番号は一意である必要があります。
前提条件
CA 証明書を取得しています。
OpenSSL v1.1.1i 以降がインストールされています。
CA 証明書を使用してデバイス証明書を発行する
この例では、自己署名 CA 証明書を使用してデバイス証明書を発行します。自己署名証明書の生成方法については、「自己署名 CA 証明書」をご参照ください。
デバイス証明書を生成する
Rivest-Shamir-Adleman(RSA)デバイス証明書
構成ファイルを作成します。
client.csr.cfg という名前のファイルを作成します。次のサンプルコードは、ファイルの内容の例を示しています。
説明ビジネス要件に基づいて
[dn]
の情報を変更します。[req] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn [dn] C=CN ST=ZJ L=HZ O=ALI OU=MQTT emailAddress=xxx@xxx CN=client-test
client.crt.cfg という名前のファイルを作成します。次のサンプルコードは、ファイルの内容の例を示しています。
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign
次のコマンドを実行して、デバイス証明書の秘密鍵と証明書署名要求(CSR)ファイルを生成します。
Mac:
openssl req -new -sha256 -nodes -out client.csr -newkey rsa:2048 -keyout client.key -config <(cat client.csr.cfg)
Windows:
openssl req -new -sha256 -nodes -out client.csr -newkey rsa:2048 -keyout client.key -config client.csr.cfg
次のコマンドを実行して、デバイス証明書を生成します。
openssl x509 -req -in client.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out client.crt -days 500 -sha256 -extfile client.crt.cfg
Elliptic Curve Cryptography(ECC)デバイス証明書
構成ファイルを作成します。
client.csr.cfg という名前のファイルを作成します。次のサンプルコードは、ファイルの内容の例を示しています。
説明ビジネス要件に基づいて
[dn]
の情報を変更します。[req] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn [dn] C=CN ST=ZJ L=HZ O=ALI OU=MQTT emailAddress=xxx@xxx CN=client-test
client.crt.cfg という名前のファイルを作成します。次のサンプルコードは、ファイルの内容の例を示しています。
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign
次のコマンドを実行して、デバイス証明書の秘密鍵を生成します。
openssl ecparam -out client.key -name prime256v1 -genkey
次のコマンドを実行して、デバイス証明書の CSR ファイルを生成します。
Mac:
openssl req -new -sha256 -nodes -out client.csr -key client.key -config <(cat client.csr.cfg)
Windows:
openssl req -new -sha256 -nodes -out client.csr -key client.key -config client.csr.cfg
次のコマンドを実行して、デバイス証明書を生成します。
openssl x509 -req -in client.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out client.crt -days 500 -sha256 -extfile client.crt.cfg
次のコマンドを実行して、デバイス証明書の秘密鍵を PKCS#8 形式に変換します。
openssl pkcs8 -topk8 -nocrypt -in client.key -out client_pkcs8.key
重要コードを使用してクライアントをブローカーに接続する場合は、
deviceKyPath
パラメーターをデバイス証明書の秘密鍵のパスに設定します。パラメーターをデバイス証明書の秘密鍵に設定しないでください。
デバイス証明書チェーンを生成する
次のコマンドを実行して、
client_chain.crt
という名前の空の証明書チェーンファイルを作成します。touch client_chain.crt
次のコマンドを実行して、デバイス証明書の内容を証明書チェーンファイルにコピーします。
cat client.crt >> client_chain.crt
次のコマンドを実行して、CA 証明書の内容を証明書チェーンファイルにコピーし、コピーした内容をデバイス証明書の内容に追加します。
cat CA.crt >> client_chain.crt
cat client_chain.crt
コマンドを実行して、デバイス証明書チェーンの内容を表示できます。
デバイス証明書と、デバイス証明書を発行した CA 証明書を使用して証明書チェーンが生成された後にのみ、デバイス証明書を使用してクライアントをブローカーに接続できます。
証明書チェーンを生成するには、複数の証明書の内容を連結します。生成された証明書チェーンでは、下位レベルの証明書の内容が上位レベルの証明書の前に配置されます。
デバイス証明書をクエリする
ApsaraMQ for MQTT インスタンスに登録されているすべてのデバイス証明書を表示できます。また、シリアル番号に基づいてデバイス証明書をクエリすることもできます。
ApsaraMQ for MQTT コンソール にログオンします。左側のナビゲーションウィンドウで、インスタンスリスト をクリックします。
上部のナビゲーションバーで、管理するインスタンスが存在するリージョンを選択します。[インスタンス] ページで、インスタンス名をクリックして インスタンスの詳細 ページに移動します。
左側のナビゲーションウィンドウで、 を選択します。
[デバイス証明書] ページで、ApsaraMQ for MQTT インスタンスに登録されているすべてのデバイス証明書を表示できます。
デバイス証明書 ページの検索ボックスに、デバイスまたは CA 証明書のシリアル番号を入力して、デバイス証明書をクエリします。
検索ボックスにデバイス証明書のシリアル番号を入力すると、そのシリアル番号によって一意に識別されるデバイス証明書が返されます。
CA 証明書のシリアル番号を入力すると、その CA 証明書によって発行され、ApsaraMQ for MQTT ブローカーに登録されているすべてのデバイス証明書が返されます。
デバイス証明書をアクティブ化または登録解除する
デバイス証明書をアクティブ化または登録解除して、ステータスを変更できます。デバイス証明書は、[アクティブ] または [非アクティブ] 状態になります。デフォルトでは、デバイス証明書は ApsaraMQ for MQTT ブローカーに登録されるとアクティブになります。
[アクティブ] 状態のデバイス証明書:デバイス証明書を一時的に無効にする場合は、証明書を登録解除できます。その後、証明書は使用できなくなり、[非アクティブ] 状態になります。
[非アクティブ] 状態のデバイス証明書:無効になっているデバイス証明書を再利用する場合は、証明書を再度アクティブ化できます。その後、証明書は [アクティブ] 状態になります。
デバイス証明書リストで、管理するデバイス証明書を見つけ、[登録解除][アクティブ化]操作 列の または をクリックします。
デバイス証明書を削除する
デバイス証明書を削除すると、デバイス証明書に関する情報は ApsaraMQ for MQTT ブローカーのストレージレコードから削除されます。
削除したデバイス証明書を使用してクライアントをブローカーに接続し、関連付けられている CA 証明書が有効な場合、デバイス証明書はブローカーに自動的に登録されます。
デバイス証明書リストで、削除するデバイス証明書を見つけ、[削除]操作 列の をクリックします。
表示されるメッセージで、[OK] をクリックします。