ApsaraMQ for MQTT では、デバイス証明書を使用してクライアントアクセスを認証できます。このトピックでは、CA 証明書を使用してデバイス証明書を発行する方法と、ApsaraMQ for MQTT コンソールでデバイス証明書を管理する方法 (クエリ、アクティブ化、登録解除、削除など) について説明します。
背景情報
デバイス証明書は、認証局 (CA) のルート証明書によってクライアントデバイスに発行されるデジタル証明書です。クライアントがサーバーに接続すると、サーバーはデバイス証明書を使用してクライアントを認証します。認証が成功すると、サーバーとクライアントは証明書内の暗号化されたキーを使用して安全に通信できます。認証が失敗した場合、サーバーはクライアントのアクセスリクエストを拒否します。
デバイス証明書は、発行元の CA 証明書が ApsaraMQ for MQTT サーバーに登録された後にのみ認証に使用できます。詳細については、「CA 証明書を登録する」をご参照ください。
クライアントデバイスがアクセス認証にデバイス証明書を使用すると、サーバーは登録済みの CA 証明書と照合してデバイス証明書を検証します。証明書が一致すると、クライアントは認証に合格し、システムは自動的にデバイス証明書をサーバーに登録します。
制限事項
デバイス証明書管理機能は、プラチナエディションおよびプロフェッショナルエディションのインスタンスでのみサポートされます。
ApsaraMQ for MQTT サーバーに登録されているデバイス証明書のみを管理できます。
デバイス証明書のシリアル番号は一意である必要があります。
前提条件
CA 証明書を取得済みであること。
OpenSSL v1.1.1i 以降をインストール済みであること。
CA 証明書を使用したデバイス証明書の発行
このセクションでは、自己署名 CA 証明書を使用してデバイス証明書を発行する方法について説明します。自己署名 CA 証明書の生成方法については、「自己署名 CA 証明書」をご参照ください。
デバイス証明書の生成
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-testclient.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
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-testclient.crt.cfg という名前のファイルを作成します。次のサンプルコードは、ファイルの内容の例を示しています。
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign
次のコマンドを実行して、デバイス証明書の秘密鍵 client.key を生成します。
openssl ecparam -out client.key -name prime256v1 -genkey次のコマンドを実行して、デバイス証明書の client.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.key ファイルではなく、client_pkcs8.key ファイルのパスに設定する必要があります。
デバイス証明書チェーンの生成
client_chain.crtという名前の空の証明書チェーンファイルを作成します。touch client_chain.crtデバイス証明書の内容を証明書チェーンファイルにコピーします。
cat client.crt >> client_chain.crtCA 証明書の内容を証明書チェーンファイルにコピーし、デバイス証明書の内容に追加します。
cat CA.crt >> client_chain.crt
cat client_chain.crt コマンドを実行して、デバイス証明書チェーンの内容を表示できます。
デバイス証明書とそれを発行した CA 証明書から証明書チェーンが生成された後にのみ、デバイス証明書を使用してサーバーに接続できます。
証明書チェーンを生成するには、複数の証明書の内容を連結します。子証明書の内容は、親証明書の内容の前に置く必要があります。
デバイス証明書のクエリ
特定のインスタンスに登録されているすべてのデバイス証明書を表示したり、証明書のシリアル番号を使用して正確な検索を実行したりできます。
ApsaraMQ for MQTT コンソールにログインします。左側のナビゲーションウィンドウで、インスタンスリスト をクリックします。
上部のナビゲーションバーで、管理するインスタンスが存在するリージョンを選択します。[インスタンス] ページで、インスタンス名をクリックして インスタンスの詳細 ページに移動します。
左側のナビゲーションウィンドウで、 を選択します。
[デバイス証明書] ページには、サーバーに登録されているすべてのデバイス証明書が表示されます。
デバイス証明書リストの上にある検索ボックスに、デバイス証明書または CA 証明書のシリアル番号を入力して、指定したデバイス証明書をクエリします。
デバイス証明書のシリアル番号を入力すると、そのシリアル番号に対応する一意のデバイス証明書が返されます。
CA 証明書のシリアル番号を入力すると、その CA 証明書によって発行され、サーバーに登録されているすべてのデバイス証明書が返されます。
デバイス証明書のアクティブ化または登録解除
デバイス証明書をアクティブ化または登録解除して、そのステータスを変更できます。デバイス証明書は、[アクティブ化済み] または [非アクティブ化] の状態にすることができます。デフォルトでは、デバイス証明書はサーバーに登録された後、[アクティブ化済み] の状態になります。
[アクティブ化済み] 状態の証明書: 証明書を一時的に無効にするには、登録を解除します。証明書の登録が解除されると、使用できなくなり、ステータスが [非アクティブ化] に変わります。
[非アクティブ化] 状態の証明書: 証明書の使用を再開するには、アクティブ化します。証明書がアクティブ化されると、ステータスが [アクティブ化済み] に変わります。
デバイス証明書リストで対象の証明書を見つけ、操作 列の [登録解除] または [アクティブ化] をクリックします。
デバイス証明書の削除
デバイス証明書を削除すると、サーバーのストレージレコードからその登録情報が削除されます。証明書ファイル自体は削除されません。
デバイス証明書が削除された後、クライアントがそのデバイス証明書をアクセス認証に使用し、関連付けられた CA 証明書がまだ有効である場合、デバイス証明書は自動的にサーバーに再登録され、認証に合格します。
デバイス証明書リストで対象の証明書を見つけ、操作 列の [削除] をクリックします。
表示されるダイアログボックスで、[OK] をクリックします。