すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for MQTT:サーバー証明書の管理

最終更新日:Aug 02, 2025

MQTT クライアント用 ApsaraMQ は、サーバー証明書を使用して MQTT ブローカー用 ApsaraMQ を認証します。 サーバー証明書を購入または発行し、Alibaba Cloud Certificate Management Service で証明書をホストする必要があります。 このトピックでは、サーバー証明書を生成して使用する方法について説明します。

サーバー証明書を使用するプロセス

image

制限

サーバー証明書は、ApsaraMQ for MQTT Enterprise Platinum Edition インスタンスでのみ管理できます。

前提条件

  • 認証局 (CA) 証明書を取得済みであること。

  • OpenSSL v1.1.1i 以降がインストールされていること。

ステップ 1: CA 証明書を使用してサーバー証明書を発行する

CA からサーバー証明書を購入するか、CA 証明書を使用してサーバー証明書を発行できます。 CA 証明書の取得方法については、「自己署名証明書」をご参照ください。

Rivest-Shamir-Adleman (RSA) CA 証明書

  1. インストールされている OpenSSL ライブラリのパスに、構成ファイルを作成します。

    1. server.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=mqtt-test.xxx.aliyuncs.com // 共通名
      
    2. server.crt.cfg という名前のファイルを作成します。 次のサンプルコードは、ファイルの内容の例を示しています。

      説明
      • [alt_names] セクションでカスタムドメイン名を指定できます。 カスタムドメイン名を使用する場合は、CNAME レコードを作成して、カスタムドメイン名を ApsaraMQ for MQTT が提供するドメイン名にマップする必要があります。

      • カスタムドメイン名を使用しない場合は、[alt_names] セクションに ApsaraMQ for MQTT が提供するドメイン名を指定します。 例: DNS.2=mqtt-test.cn-qingdao.aliyuncs.com

      • 複数のリージョンにデプロイされた ApsaraMQ for MQTT インスタンスに同じサーバー証明書を使用する場合は、アスタリスク (*) ワイルドカード文字を使用してドメイン名を指定します。 例: DNS.1=*.mqtt.aliyuncs.com。

      authorityKeyIdentifier=keyid,issuer
      basicConstraints=CA:FALSE
      keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign
      extendedKeyUsage = serverAuth, clientAuth
      subjectAltName = @alt_names
      
      [alt_names]
      DNS.1=*.mqtt.aliyuncs.com
      DNS.2=mqtt-test.cn-qingdao.aliyuncs.com
  2. 次のコマンドを実行して、サーバー証明書の秘密鍵と証明書署名要求 (CSR) ファイルを生成します。

    • Mac:

      openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <(cat server.csr.cfg)
    • Windows:

      openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config server.csr.cfg
  3. 次のコマンドを実行して、サーバー証明書の秘密鍵を PKCS#8 形式に変換します。

    openssl pkcs8 -topk8 -nocrypt -in server.key -out server_pkcs8.key

    変換後、サーバー証明書の秘密鍵ファイルは server_pkcs8.key になります。 cat server_pkcs8.key コマンドを実行して、秘密鍵を表示できます。 秘密鍵の例:

    重要

    Certificate Management Service でサーバー証明書をホストする場合、生成されたサーバー証明書の秘密鍵をアップロードする必要があります。 詳細については、「ステップ 2: サーバー証明書をホストする」をご参照ください。

    -----BEGIN PRIVATE KEY-----
    MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALaDOET1McZD0hV/
    ma1YlSZjim00rVwrdXefqOHXWEqm8/HxZ3iWmKN/jGWW1aAoYFRAg0CNar1eDap4
    *****
    *****
    *****
    PLX2WlXAXggKZvpozkig/J6klAN8pVvwM4BPgJDLk+hllM8MowOxlNjoHsI34lAQ
    g17SUS1ERIK+
    -----END PRIVATE KEY-----
  4. 次のコマンドを実行して、サーバー証明書を生成します。

    openssl x509 -req -in server.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile server.crt.cfg

    生成されたサーバー証明書は server.crt です。

  5. サーバー証明書チェーンを生成します。

    1. server_chain.crt という名前の空の証明書チェーンファイルを作成するには、次のコマンドを実行します。

      touch server_chain.crt
    2. サーバー証明書の内容を証明書チェーンファイルにコピーするには、次のコマンドを実行します。

      cat server.crt >> server_chain.crt
    3. CA 証明書の内容を証明書チェーンファイルにコピーし、コピーした内容をサーバー証明書の内容に追加するには、次のコマンドを実行します。

      cat CA.crt >> server_chain.crt

    cat server_chain.crt コマンドを実行すると、次の形式で表示されるサーバー証明書チェーンの内容を表示できます。

    重要

    Certificate Management Service でサーバー証明書をホストする場合、生成されたサーバー証明書チェーンをアップロードする必要があります。 詳細については、「ステップ 2: サーバー証明書をホストする」をご参照ください。

    -----BEGIN CERTIFICATE-----
    xxx
    The content of the server certificate. // サーバー証明書の内容
    xxx
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    xxx
    The content of the CA certificate. // CA 証明書の内容
    xxx
    -----END CERTIFICATE-----

Elliptic Curve Cryptography (ECC) CA 証明書

  1. インストールされている OpenSSL ライブラリのパスに構成ファイルを作成します。

    1. server.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=mqtt-test.xxx.aliyuncs.com // 共通名
      
    2. server.crt.cfg という名前のファイルを作成します。 次のサンプルコードは、ファイルの内容の例を示しています。

      説明
      • [alt_names] セクションでカスタムドメイン名を指定できます。 カスタムドメイン名を使用する場合は、CNAME レコードを作成して、カスタムドメイン名を ApsaraMQ for MQTT によって提供されるドメイン名にマップする必要があります。

      • カスタムドメイン名を使用しない場合は、[alt_names] セクションに ApsaraMQ for MQTT によって提供されるドメイン名を指定します。 例: DNS.2=mqtt-test.cn-qingdao.aliyuncs.com

      • 複数のリージョンにデプロイされた ApsaraMQ for MQTT インスタンスに同じサーバー証明書を使用する場合は、アスタリスク (*) ワイルドカード文字を使用してドメイン名を指定します。 例: DNS.1=*.mqtt.aliyuncs.com。

      authorityKeyIdentifier=keyid,issuer
      basicConstraints=CA:FALSE
      keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign
      extendedKeyUsage = serverAuth, clientAuth
      subjectAltName = @alt_names
      
      [alt_names]
      DNS.1=*.mqtt.aliyuncs.com
      DNS.2=mqtt-test.cn-qingdao.aliyuncs.com
  2. server.key という名前のファイルを作成して、サーバー証明書の秘密鍵を保存します。

    openssl ecparam -out server.key -name prime256v1 -genkey
  3. server.csr という名前のファイルを作成して、サーバー証明書の発行リクエストを送信します。

    • Mac:

      openssl req -new -sha256 -nodes -out server.csr -key server.key -config <(cat server.csr.cfg)
    • Windows:

      openssl req -new -sha256 -nodes -out server.csr -key server.key -config server.csr.cfg
  4. CA 証明書を使用してサーバー証明書を発行します。

    openssl x509 -req -in server.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile server.crt.cfg
  5. 次のコマンドを実行して、サーバー証明書の秘密鍵を PKCS#8 形式に変換します。変換後、サーバー証明書の秘密鍵ファイルは server_pkcs8.key になります。

    openssl pkcs8 -topk8 -nocrypt -in server.key -out server_pkcs8.key
    重要

    Certificate Management Service でサーバー証明書をホストする場合、生成されたサーバー証明書の秘密鍵をアップロードする必要があります。 詳細については、「ステップ 2: サーバー証明書をホストする」をご参照ください。

  6. サーバー証明書チェーンを生成します。

    1. server_chain.crt という名前の空の証明書チェーンファイルを作成するには、次のコマンドを実行します。

      touch server_chain.crt
    2. サーバー証明書の内容を証明書チェーンファイルにコピーするには、次のコマンドを実行します。

      cat server.crt >> server_chain.crt
    3. CA 証明書の内容を証明書チェーンファイルにコピーし、コピーされた内容をサーバー証明書の内容に追加するには、次のコマンドを実行します。

      cat CA.crt >> server_chain.crt
    重要

    Certificate Management Service でサーバー証明書をホストする場合、生成されたサーバー証明書チェーンをアップロードする必要があります。 詳細については、「ステップ 2: サーバー証明書をホストする」をご参照ください。

ステップ 2: サーバー証明書をホストする

ApsaraMQ for MQTT コンソール でサーバー証明書を表示して有効にするには、発行されたサーバー証明書を Certificate Management Service コンソール でホストする必要があります。

説明
  • サーバー証明書は、RSA および ECC アルゴリズムをサポートしています。

  • カスタムドメイン名を使用する場合は、証明書にドメイン名を指定し、CNAME レコードを作成して、ドメイン名を ApsaraMQ for MQTT インスタンスのエンドポイントに解決します。

  1. ApsaraMQ for MQTT コンソール にログインします。 左側のナビゲーションウィンドウで、インスタンスリスト をクリックします。

  2. 上部のナビゲーションバーで、管理するインスタンスが存在するリージョンを選択します。 [インスタンス] ページで、インスタンス名をクリックして インスタンスの詳細 ページに移動します。

  3. 左側のナビゲーションウィンドウで、証明書の管理 > サーバー証明書 を選択します。 [サーバー証明書] ページの左上隅にある 証明書の作成 をクリックします。

    システムによって Certificate Management Service コンソール[SSL 証明書管理] ページにリダイレクトされます。

  4. [SSL 証明書管理] ページで、[証明書のアップロード] をクリックします。 [証明書のアップロード] パネルでパラメーターを構成し、[OK] をクリックします。

    image

    • 証明書アルゴリズム: 国際的に認められたアルゴリズム を選択します。

    • 証明書ファイル: ステップ 1: CA 証明書を使用してサーバー証明書を発行する で生成された server_chain.crt サーバー証明書チェーンファイルをアップロードするか、サーバー証明書チェーンの内容をフィールドにコピーします。

    • 証明書キー: ステップ 1: CA 証明書を使用してサーバー証明書を発行する で生成された server_pkcs8.key 秘密鍵ファイルをアップロードするか、秘密鍵の内容をフィールドにコピーします。

    • 証明書チェーン: このフィールドに証明書チェーンファイルをアップロードしたり、証明書チェーンファイルの内容を指定したりしないことをお勧めします。 そうしないと、証明書の認証に失敗します。

ステップ 3: サーバー証明書を使用して ApsaraMQ for MQTT を有効にする

警告

サーバー証明書を使用して ApsaraMQ for MQTT を有効にすると、クライアントは切断されます。 この操作を実行する際は注意してください。

証明書が無効な場合、ApsaraMQ for MQTT は一時的に使用できなくなります。

  1. ApsaraMQ for MQTT コンソール にログインします。 左側のナビゲーションウィンドウで、インスタンスリスト をクリックします。

  2. 上部のナビゲーションバーで、管理するインスタンスが存在するリージョンを選択します。 [インスタンス] ページで、インスタンス名をクリックして インスタンスの詳細 ページに移動します。

  3. 左側のナビゲーションウィンドウで、証明書の管理 > サーバー証明書 を選択します。

  4. 相互認証 タブをクリックします。 表示されるダイアログボックスで、サーバー証明書を選択し、Actions 列の サービスの開始 をクリックします。

    • [サービスの有効化] をクリックすると、ApsaraMQ for MQTT インスタンスが再起動されます。 再起動には約 5 ~ 10 分かかります。 インスタンスが再起動されると、クライアントはサーバー証明書を使用してブローカーを認証できます。

    • ApsaraMQ for MQTT を有効にすると、ポート 8883 で相互認証が有効になり、一方向認証が無効になります。

  5. 表示されるメッセージで注意事項を読み、OK をクリックします。

説明

一方向認証に戻す場合は、単方向認証 タブをクリックします。 表示されるメッセージで、OK をクリックします。 その後、ブローカーが再起動するまで待ちます。