Skip to content

Dedicated および Dedicated Flex デプロイメントの TLS/SSL 設定 ​

Dedicated および Dedicated Flex デプロイメントは、片方向および双方向の TLS/SSL 認証に対応したカスタム証明書をサポートしています。本ガイドでは、TLS/SSL の設定方法とクライアント接続のテスト方法について説明します。

以下の表は、片方向認証と双方向認証モードにおける各種証明書の要件概要を示しています。

認証モード自己署名証明書サーバー証明書証明書チェーン秘密鍵クライアント CA 証明書
片方向認証可必須任意必須不要
双方向認証可必須任意必須必須

証明書の要件 ​

サーバー証明書および証明書チェーン ​

  • X.509 証明書は PEM 形式で提供してください。証明書ブロック間には空白文字のみ許容されます。
  • サーバー証明書を最初に配置し、その後に発行順に中間証明書を続けてください。サーバー証明書単体も受け付けます。チェーンは最大5枚の証明書まで含めることができます。
  • サーバー証明書は有効期限内であり、少なくとも5日以上の有効期間が残っている必要があります。
  • 証明書はエンコード、署名、およびチェーンの検証に合格しなければなりません。

CA が中間 CA を介してサーバー証明書を発行している場合は、クライアントがサーバー証明書を検証できるように中間証明書を含めてください。ルート証明書は任意です。

クライアント CA 証明書 ​

双方向 TLS の場合、信頼できるクライアント CA 証明書を PEM 形式で1枚以上提供してください。EMQX Cloud は各証明書のエンコードおよびフィールドを個別に検証します。これらの証明書は順序付けられたチェーンを形成する必要はありません。チェーン要件はサーバー証明書チェーンのみに適用され、最大5枚の証明書、最初の証明書は少なくとも5日以上の有効期間が必要です。

秘密鍵 ​

パスワードなしの PEM 形式の秘密鍵を PKCS#1 または PKCS#8 形式で提供してください。秘密鍵はサーバー証明書と一致している必要があります。

TIP

EMQX Cloud は TLS/SSL 設定を保存または適用する前に証明書の入力を検証します。検証に失敗した場合、現在の証明書および設定は変更されません。

片方向 TLS/SSL の設定 ​

以下の手順では、EMQX Cloud コンソールで片方向 TLS/SSL を設定し、TLS/SSL 設定済みのクライアント接続をテストする方法を説明します。設定の各ステップは 片方向 TLS/SSL チュートリアル でもご覧いただけます。

  1. EMQX Cloud コンソールにログインします。
  2. デプロイメントの Overview ページで、+TLS/SSL Config ボタンをクリックして証明書を設定します。ファイルをアップロードするか、証明書の内容を直接入力できます。
    • TLS/SSL Type:片方向(クライアントのみがサーバー側証明書を検証)を選択します。
    • Certificate and Certificate Chain:カスタムサーバー側証明書(証明書チェーンを含む。証明書発行時に第三者機関から提供されるもの)。
    • Certificate Private Key:秘密鍵。
  3. すべての項目を入力後、Confirm をクリックします。デプロイメントの概要ページにある TLS/SSL Config に証明書情報が表示されます。

MQTTX クライアントで片方向 TLS をテストする ​

テスト前に認証情報を作成していることを確認してください。詳細は 認証 を参照してください。MQTTX クライアント を使用して EMQX Cloud に接続し、TLS/SSL 設定をテストできます。

  1. MQTTX クライアントで新しい接続を作成します。

    General セクションに以下の情報を入力します:

    • Name:接続名を入力します。
    • Client ID:クライアントIDはランダム生成されます。更新ボタンをクリックして再生成可能です。
    • Host:ドロップダウンリストからプロトコルを選択し、デプロイメントの接続アドレスとポートを入力します。
      • MQTT over TLS を使用する場合は、mqtts:// とポート 8883 を選択します。
      • WebSocket over TLS を使用する場合は、wss:// とポート 8084 を選択します。
    • Username と Password:作成済みの認証情報を入力します。
    • SSL/TLS:トグルスイッチをクリックして SSL/TLS を有効にします。
    • SSL Secure:トグルスイッチをクリックして SSL Secure を有効にします。
    • Certificate:必要に応じて証明書を選択します。
      • CA 認証局による証明書の場合は CA signed server を選択します。
      • 自己署名証明書の場合は Self signed を選択し、自己署名サーバー側 CA 証明書を提供します。自己署名 TLS/SSL 証明書の作成方法は 自己署名 TLS/SSL 証明書の作成 を参照してください。
  2. Connect をクリックします。

mqttx_tls

双方向 TLS/SSL の設定 ​

以下の手順では、EMQX Cloud コンソールで双方向 TLS/SSL を設定し、TLS/SSL 設定済みのクライアント接続をテストする方法を説明します。設定の各ステップは 双方向 TLS/SSL チュートリアル でもご覧いただけます。

  1. EMQX Cloud コンソールにログインします。
  2. デプロイメントの Overview ページで、+TLS/SSL Config ボタンをクリックして証明書を設定します。ファイルをアップロードするか、証明書の内容を直接入力できます。
    • TLS/SSL Type:双方向(クライアントとサーバーが互いの証明書を検証)を選択します。
    • Certificate and Certificate Chain:カスタムサーバー側証明書(証明書チェーンを含む)。
    • Certificate Private Key:秘密鍵。
    • Client CA Certificate:双方向を選択した場合、クライアント CA 証明書を提供する必要があります。
  3. すべての項目を入力後、Confirm をクリックします。デプロイメントの概要ページにある TLS/SSL Config に証明書情報が表示されます。

MQTTX クライアントで双方向 TLS をテストする ​

テスト前に認証情報を作成していることを確認してください。詳細は 認証 を参照してください。MQTTX クライアント を使用して EMQX Cloud に接続し、TLS/SSL 設定をテストできます。

  1. MQTTX クライアントで新しい接続を作成します。

    General セクションに以下の情報を入力します:

    • Name:接続名を入力します。
    • Client ID:クライアントIDはランダム生成されます。更新ボタンをクリックして再生成可能です。
    • Host:ドロップダウンリストからプロトコルを選択し、デプロイメントの接続アドレスとポートを入力します。
      • MQTT over TLS を使用する場合は、mqtts:// とポート 8883 を選択します。
      • WebSocket over TLS を使用する場合は、wss:// とポート 8084 を選択します。
    • Username と Password:作成済みの認証情報を入力します。
    • SSL/TLS:トグルスイッチをクリックして SSL/TLS を有効にします。
    • SSL Secure:トグルスイッチをクリックして SSL Secure を有効にします。
    • Certificate:必要に応じて証明書を選択します。
      • サーバー側 CA が CA 認証局により認証された証明書の場合は Self signed を選択し、CA File フィールドに証明書を入力します。自己署名 TLS/SSL 証明書の作成方法は 自己署名 TLS/SSL 証明書の作成 を参照してください。
      • 自己署名サーバー側証明書の場合は Self signed を選択し、自己署名サーバー側 CA 証明書を提供します。
      • 双方向 TLS ではクライアント証明書ファイルとクライアント鍵ファイルも入力する必要があります。
  2. Connect をクリックします。

mqttx_tls

自己署名 TLS/SSL 証明書の作成 ​

以下の手順では、自己署名 TLS/SSL 証明書の作成方法を説明します。設定の各ステップは 自己署名 TLS/SSL 証明書作成チュートリアル でもご覧いただけます。

前提条件

OpenSSL がインストールされていることを確認してください。

サーバー側 CA 証明書の生成 ​

以下のコマンドでサーバー側 CA 証明書を生成できます。subj は実際の用途に合わせて調整してください。

bash
openssl req \
    -new \
    -newkey rsa:2048 \
    -days 365 \
    -nodes \
    -x509 \
    -subj "/C=CN/O=EMQ Technologies Co., Ltd/CN=EMQ CA" \
    -keyout server-ca.key \
    -out server-ca.crt

サーバー側証明書の作成 ​

  1. サーバー側秘密鍵 server.key を生成します。
bash
openssl genrsa -out server.key 2048
  1. openssl.cnf ファイルを作成します。IP.1 または DNS.1 のアドレスをデプロイメントの接続アドレスに置き換えてください。
cat << EOF > ./openssl.cnf
[policy_match]
countryName             = match
stateOrProvinceName     = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

[req]
default_bits       = 2048
distinguished_name = req_distinguished_name
req_extensions     = req_ext
x509_extensions    = v3_req
prompt             = no

[req_distinguished_name]
commonName          = Server

[req_ext]
subjectAltName = @alt_names

[v3_req]
subjectAltName = @alt_names

[alt_names]
# EMQX デプロイメント接続アドレス
# IP.1 = <IP 接続アドレス>
DNS.1 = <ドメイン接続アドレス>
EOF
  1. サーバー側証明書要求ファイル server.csr を生成します。
bash
openssl req -new -key server.key -config openssl.cnf -out server.csr
  1. CA 証明書でサーバー側証明書に署名し、server.crt を作成します。
bash
openssl x509 -req \
    -days 365 \
    -sha256 \
    -in server.csr \
    -CA server-ca.crt \
    -CAkey server-ca.key \
    -CAcreateserial -out server.crt \
    -extensions v3_req -extfile openssl.cnf
  1. サーバー側証明書情報を確認します。
bash
openssl x509 -noout -text -in server.crt
  1. 証明書を検証します。
bash
openssl verify -CAfile server-ca.crt server.crt

クライアント証明書の作成 ​

双方向認証の場合、まずクライアント CA 証明書を生成する必要があります。

クライアント CA 証明書の生成 ​

以下のコマンドでクライアント CA 証明書を生成できます。subj は実際の用途に合わせて調整してください。

bash
openssl req \
    -new \
    -newkey rsa:2048 \
    -days 365 \
    -nodes \
    -x509 \
    -subj "/C=CN/O=EMQ Technologies Co., Ltd/CN=EMQ CA" \
    -keyout client-ca.key \
    -out client-ca.crt
  1. クライアント側秘密鍵 client.key を生成します。
bash
openssl genrsa -out client.key 2048
  1. クライアント側証明書要求ファイル client.csr を生成します。
bash
openssl req -new -key client.key -out client.csr -subj "/CN=Client"
  1. CA 証明書でクライアント側証明書に署名し、client.crt を作成します。
bash
openssl x509 -req -days 365 -sha256 -in client.csr -CA client-ca.crt -CAkey client-ca.key -CAcreateserial -out client.crt
  1. クライアント側証明書情報を確認します。
bash
openssl x509 -noout -text -in client.crt
  1. 証明書を検証します。
bash
openssl verify -CAfile client-ca.crt client.crt

証明書の削除 ​

証明書を削除すると、ポート 8883 および 8084 でのクライアント接続が切断されます。削除が業務に影響を与えないことを確認してください。

  1. EMQX Cloud コンソールにログインします。
  2. TLS/SSL Config セクションの証明書の削除アイコンをクリックします。
  3. ダイアログで OK をクリックして削除を完了します。

FAQ ​

証明書に複数の証明書が含まれている場合 ​

購入した証明書には中間証明書が含まれていることがあります。テキスト形式で証明書を開くと、ユーザー証明書、中間証明書、ルート証明書の順に複数の証明書が含まれています。一般的に証明書はユーザー証明書と複数の中間証明書で構成されているため、ユーザー証明書と中間証明書を分離し、中間証明書を証明書チェーンに入力する必要があります。

bash
-----BEGIN CERTIFICATE-----

ユーザー証明書

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

中間証明書

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

ルート証明書

-----END CERTIFICATE-----

証明書チェーンが不足している場合 ​

証明書チェーンの補完はこちらをご参照ください:https://myssl.com/chain_download.html

双方向 TLS または mTLS 使用時にユーザー名/パスワード認証を無効にできますか? ​

はい、相互 TLS (mTLS) 使用時にユーザー名とパスワード認証を無効にすることが可能です。ただし、セキュリティ上の理由から両方の認証方式を有効にしておくことを強く推奨します。デバイス証明書が漏洩した場合、不正なデバイスがその証明書を使って EMQX Cloud に接続できてしまうためです。

ユーザー名/パスワード認証を無効にしたい場合、EMQX v5 または v6 を実行している Dedicated および Dedicated Flex デプロイメントでは、コンソールの Ports Management から直接設定可能です。他のデプロイメントタイプの場合はサポートチケットを提出してください。SRE チームがデプロイメントのポート 8883 と 8084 での無効化を支援します。

エンドツーエンドのセットアップガイドは mTLS デバイス接続のベストプラクティス をご参照ください。

証明書の CN をユーザー名やクライアント ID にマッピングできますか? ​

はい、EMQX Cloud では証明書の Common Name (CN) をユーザー名またはクライアント ID にマッピングできます。EMQX 5.10.3 以降を実行している Dedicated および Dedicated Flex デプロイメントでは、MQTT 設定 の Use Peer Certificate as Username または Use Peer Certificate as Client ID を cn に設定することで、サポートチケットを提出せずに直接マッピングを構成できます。

重要な注意点:

  • CN をクライアント ID にマッピングする場合:各 CN が一意であることを確認してください。同じ CN を複数のクライアントが共有すると、クライアント ID の競合により接続が切断されます。
  • CN をユーザー名にマッピングする場合:接続の競合を防ぎつつ、本人確認が可能なため一般的に安全です。

ユーザー名/パスワード認証を無効にし、CN をユーザー名にマッピングした場合、漏洩した証明書の接続をどう防止しますか? ​

証明書が漏洩し CN をユーザー名にマッピングしている場合、対応するユーザー名を ブラックリスト に追加することで、漏洩したデバイスの接続を防止できます。

片方向 TLS と相互 TLS の接続を同時に使用できますか? ​

はい。EMQX の各デプロイメントは単一の TLS/SSL 証明書セットのみ使用可能ですが、異なる種類の TLS 接続は異なるリスナーを通じてサポートできます。すでに相互 TLS 認証が有効な場合でも、追加で片方向 TLS ポートを有効にできます。ただし、相互 TLS と片方向 TLS の両方のポートは同じサーバー証明書を使用する必要があり、証明書の更新時にサービス中断が発生しないようにしてください。