ApsaraMQ for MQTT では、マルチドメイン証明書を構成できます。このトピックでは、マルチドメイン証明書を構成する方法について説明します。
シナリオ
CNAME レコードを使用して複数のカスタムドメイン名を ApsaraMQ for MQTT インスタンスのドメイン名にマッピングする場合、インスタンスへのアクセスに使用する際に、カスタムドメイン名ごとに異なるサーバー証明書を構成する必要があります。
前提条件
ApsaraMQ for MQTT Enterprise Platinum エディションインスタンスが作成されていること。このエディションのインスタンスのみがこの機能をサポートしています。
CNAME レコードを使用して、複数のドメイン名が ApsaraMQ for MQTT インスタンスのドメイン名にマッピングされていること。詳細については、「CNAME レコード」をご参照ください。
ApsaraMQ for MQTT インスタンスで相互認証が有効になっており、複数のサーバー証明書がアップロードされていること。サーバー証明書の詳細については、「サーバー証明書を管理する」をご参照ください。
手順
ステップ 1:サーバー証明書を使用してサービスを開始する
ApsaraMQ for MQTT コンソール にログインします。左側のナビゲーションウィンドウで、インスタンスリスト をクリックします。
上部のナビゲーションバーで、管理するインスタンスが存在するリージョンを選択します。[インスタンス] ページで、インスタンス名をクリックして インスタンスの詳細 ページに移動します。
左側のナビゲーションウィンドウで、 を選択します。
相互認証 タブをクリックします。表示されるダイアログボックスで、サーバー証明書を選択し、サービスの開始 を Actions 列でクリックします。
[サービスを有効にする] をクリックすると、ApsaraMQ for MQTT インスタンスが再起動されます。再起動には約 5 ~ 10 分かかります。インスタンスが再起動されると、クライアントはサーバー証明書を使用してブローカーを認証できます。
ApsaraMQ for MQTT を有効にすると、ポート 8883 で相互認証が有効になり、一方向認証が無効になります。
表示されるメッセージで注意事項を読み、OK をクリックします。
ステップ 2:API 呼び出しを行い、マルチドメイン証明書を構成する
API 操作
OpenAPI エクスプローラー は署名値を自動的に計算します。便宜上、OpenAPI エクスプローラーでこの操作を呼び出すことをお勧めします。 OpenAPI エクスプローラーは、さまざまな SDK の操作のサンプルコードを動的に生成します。
リクエストパラメーター
パラメーター
タイプ
必須
説明
例
MqttInstanceId
string
はい
ApsaraMQ for MQTT インスタンスの ID。
mqtt-cn-xxxxxx
DefaultCertificate
string
はい
デフォルト証明書の ID。
アクセスするドメイン名がブローカーの証明書と一致しない場合、デフォルト証明書が返されます。
15xxxxxx-cn-hangzhou
SniConfig
string
はい
サーバー名表示 (SNI) の構成。このパラメーターは、ドメイン名と証明書をマッピングするために使用されます。
ドメイン名 A の証明書が A1 で、ドメイン名 B の証明書が B2 の場合、このパラメーターの値は
ドメイン名 A#A1 の ID#A1 のパスワード (オプション);ドメイン名 B#B1 の ID#B1 のパスワード (オプション)形式になります。mqtt-test001.aliyuncs.com#15xxxxx-cn-hangzhou;mqtt-test002.aliyuncs.com#16xxxxx-cn-hangzhou
SniConfig パラメーターの値に含まれる証明書 ID とドメイン名は、ApsaraMQ for MQTT コンソールで取得できます。この例では、
mqtt-test001.aliyuncs.comおよびmqtt-test002.aliyuncs.comテストドメイン名を使用しています。
レスポンスパラメーター
Successにtrueが返された場合、構成は成功です。Successにfalseが返された場合、構成は失敗です。{ "RequestId": "9B5505EB-D2F3-5258-886D-**********", "Success": "true" }
ステップ 3:マルチドメイン証明書をローカルで検証する
hostsファイルを変更して、複数のドメイン名にアクセスします。xxx.xxx.xxx.xxxは、ApsaraMQ for MQTT インスタンスのエンドポイントの IP アドレスを示します。# 127.0.0.1 localhost # ::1 localhost xxx.xxx.xxx.xxx mqtt-test001.aliyuncs.com xxx.xxx.xxx.xxx mqtt-test002.aliyuncs.comサンプルコードを使用して、メッセージが想定どおりに送信されるかどうかをテストし、マルチドメイン証明書が構成されているかどうかを検証します。
サンプルコード mqtt-demo をダウンロードし、
MQ4IoTBiSSLProducerDemo.javaクラスのパラメーターを置き換えてから、コードを実行してメッセージが想定どおりに送信されるかどうかをテストします。説明サンプルコードを使用する前に、MQTT_AK_ENV および MQTT_SK_ENV 環境変数を構成する必要があります。これらの変数の構成方法については、「アクセス認証情報を構成する」をご参照ください。
コードで使用するトピックとグループを事前に作成する必要があります。
コード内の
endPointパラメーターを、テスト用にhostsファイルで構成されているmqtt-test001.aliyuncs.comまたはmqtt-test002.aliyuncs.comに置き換えます。
複数のドメイン名を使用してそれぞれコードを実行した後に次の結果が返された場合、マルチドメイン証明書は有効になります。
connect success send msg succeed topic is : topic/testMq4Iot send msg succeed topic is : topic/p2p/xxxパケットキャプチャツールを使用して、返された証明書が SNI 構成と一致するかどうかを確認することもできます。次の図は、
mqtt-test002.aliyuncs.comにアクセスしたときに返された証明書を示しています。