テキストコピッド
ホーム >ニュース MQTT TLS/SSL証明書

セキュアMQTT TLS/SSL証明書によるブローカー通信

バイ Ponlakshmi


Generating SSL Certificates

セキュアなMQTTブローカーの実装の中で最も重要なステップの1つは、通信層を作ることです MQTT クライアントと MQTT サーバ間でセキュアに 他のすべての安全な通信と同様に、MQTT は信頼しています SSL/TLS 証明書 接続の確保のため。 TLS/SSL 証明書の通信に関する関連付けは、 TCPとWebsocket接続。 安全な MQTT 通信は、TCP と Websocket 用の ws の MQTTS によって表されます。

セキュアMQTT ブローカーの特徴

私たちについてMQTTブローカー(CrystalMQ) には複数のセキュリティレイヤーが組み込まれています。 MQTT TLSのサポートに加えて コミュニケーション、複数のMQTT 認証, グループおよびクライアントレベルでのMQTTトピックの承認と、バックエンドデータベースへのIOTデータストレージの確保 キューは プロダクトに統合される。 フレームワークが構築されているため、顧客はIoTを構築することができます 周りのアプリケーション、MQTT サーバーセキュリティを真剣に考え、それを実践してきた 設計からの標準。

MQTT TLS / SSL証明書とは何ですか?

SSL証明書は、暗号化キーのデジタルデータを暗号化し、セキュリティデータを暗号化するファイルです。 フェンス, 証明書を使用して、トンネル内のデータの暗号化が改ざんできないことを確認してください。 一方の端にデータを解読するための鍵が必要です。 MQTTブローカーは、有効にするためのオプションを提供します 暗号化されたデータ転送の SSL/TLS モードは、通信層のセキュリティを強化します。 ブローカー スタンダードな SSL/TLS 証明書で動作し、自己署名証明書で実行することもできます。

サイン対CAサイン

認定機関(CA)は、すべての公開鍵を格納し、すべての第3のためにそれらを検証する組織です パーティー。 認定されたデジタル証明書プロバイダが多数あります。 digicert、verisign、GeoTrust等。 これらの認証機関はルート証明書を提供します。 これらのルート 独自のドメイン名と対応するドメイン名で証明書が提供されます。 あなたの場所の細部を含むビジネス細部。 これらの証明書は、時間制限されます。 第三者 Webブラウザのようなアプリケーションは、証明書が関連付けられているときに、これらの証明書を検証します ドメインの http サーバに、証明書が有効でない場合や期限が切れた場合に警告を提供します。 自己署名証明書の場合、ルート証明書は会社や開発者によって作成されます。 手順 サーバ側およびクライアント側の証明書を作成するには、CA の証明書と自己署名の証明書と同じです。


生産環境では、CAベースの証明書が推奨されます。 しかし、MQTTでは必須 コミュニケーションは、相互のコミュニケーションがますますますMQTTの特長 クライアントサーバ。 ほとんどのものとしてMQTTの特長導入は主にプライベートで独立したコミュニケーションになります。 クライアントとサーバー間での証明書ハンドシェイクを使用して、違いの多くはない 証明書間。 ただし、ブラウザベースのWSS通信を使用している場合、サインアップを検討する必要があります CA 証明書


MQTT TLS/SSL証明書の作成

Opensl と ubuntu 環境を使用して TLS 証明書の作成を実証しています。 詳細はこちらをご覧ください。あなたの上でopensslインストール ログインお問い合わせ

ルート証明書を作成する

ルート証明書の作成は、自己署名された証明書のみ適用され、あなたはここからこれを取得します 購入していればCA。 最初のステップは秘密鍵ファイルを作成します。 以下のコマンドは、秘密鍵ファイルを作成するのに役立ちます。

opensl genrsa がオープン -out ルート。 キー 2048


鍵ファイルがパスワードを使ってセキュアにしたい場合、 -des3 引数をコマンドに追加できます。 コマンドプロンプトでパスワードを入力することができます。 パスワードを安全かつ安全に保つようにしてください。

opensl genrsa がオープン -des3 -out ルート。 キー 2048


現在のフォルダにあるキーファイル - root.key の作成を完了しました。 次のステップは 証明書の生成 上記の生成されたRSAプライベートキーを使用してファイル要求を署名する。 それに加えて、暗号化された個人が含まれています ホストの詳細(すなわち)。 国、州、組織、共通名、電子メールアドレス、および公開鍵。

opensl req -new -x509 -key ルート。 キーアウト root.csr


上記のコマンド実行は、次の詳細を要求します。

国名 :
州または州の名前:
地域名 :
組織名称:
組織図 単位の名前:
共通の名前(例えばサーバーFQDNまたはあなたの名前):
メールアドレス:
課題パスワード:(任意)
任意会社名:(任意)


署名プロセスのCSRファイルを正常に作成しました。 2つのファイル(root.keyとroot.key)を使うことができます。 root.csr の 証明書の署名と作成

opensl x509 -req -days 365 -sha1 -拡張子v3_ca -signkey root.key -in root.csr -out root.crt

上記のコマンドは、CAルート証明書として考慮されるX509ベースのルート証明書を作成します。 上記のコマンドは、365日間有効であるroot.crtを生成します。

MQTTの作成 サーバー証明書

サーバ側の証明書生成で起動するサーバキーファイルを作成する必要があります。 サーバ側 証明書 生成するパラメータの1つとして提供される根の証明書が必要です。

opensl genrsa がオープン -out server.key 2048 - サーバー


ホストの完全なサーバーの詳細を保持するサーバー csr ファイルを作成します。 これは同じようなプロセスです root.csr の作成。 このコマンドは、会社の詳細を要求します。 ご提供いただいたデータと同様のご提供をお願いします。 ルート証明書。

opensl req -new -out server.csr -keyサーバー。 キーキー


次のステップは、サーバー証明書を作成することです。 作成したルート証明書または 1 つ CA から取得する情報は、提供する必要があります。

opensl x509 -req -in server.csr -CA root.crt -CAkeyroot.key -CAcreateserial -out server.crt

MQTTの作成 顧客の証明書

クライアント証明書を作成するには、サーバー証明書の手順に従って使用できます。 CSRファイルへのファイルや適切なデータに対する適切なネーミングをご使用ください。


上記証明書は、365日有効です。 同じ証明書 権限は、 両方の生成 クライアントとサーバー証明書。

セキュアなMQTTブローカー - クライアントコミュニケーション

ルート証明書、サーバー証明書、サーバー秘密鍵はサーバー側に配置する必要があります。 ルート証明書、クライアント証明書、クライアント秘密鍵はクライアント側に配置する必要があります。


クライアントの共通証明書または個々の証明書をお持ちいただくこともできます。 問題が起きる 独自のルートを使用してクライアントに証明書。 キーとroot.crt。 MQTTブローカー/MQTT サーバは共通の名前を確かめます 接続プロセス中のクライアントIP。 両方が同じである場合、ブローカーはクライアントが それ以外の場合は、クライアントの接続を拒否します。


デプロイして実行する手順に従ってくださいMQTTブローカー安全な環境で。


  • ブローカー証明書とキーファイルには、./Certificate/serverフォルダに存在する必要があります。
  • CA 証明書は ./Certificate/root フォルダーに存在する必要があります。
  • TCP ポートを 8883 に変更し、Websocket ポートを 11443 に変更し、ブローカーの TLS を有効にします。 どんな用途でも使えます 展開のためのランダムポート。 MQTT サーバーとクライアントで同じポートが使用されることを確認してください。

デプロイして実行する手順に従ってくださいMQTTクライアント安全な環境で。


  • root.crt、クライアントをバンドルしてください。 キーおよび顧客。 クライアントビルドと一緒に crt を実行します。 お問い合わせ お問い合わせ デバイスビンファイルとソフトウェアパッケージ。
  • クライアントコードは、証明書ファイルをロードするために更新する必要があります。
  • 例えば、python mqttクライアントpaho では TLS を使用できるオプションがあります。client.tls_set(ca_certs=ca_cert), cert_reqs=ssl.CERT_REQUIRED ライセンス参照パスはコードで指定する必要があります。
  • TCP ポートを 8883、Websocket ポートを 11443 に変更し、右側の MQTT ブローカーエンドポイントをporvide します。 お問い合わせ 任意のランダムポートを使用して展開します。 MQTT サーバーとクライアントで同じポートが使用されることを確認してください。

SSL証明書のmakefile使用可能 セルフスイング証明書を生成し、MQTT ブローカーにデプロイします。 スクリプトを実行している間、プロンプト中に必要な情報が提供されることを確認してください。 クリスタル MQはあります のために設計されているエンタープライズグレードMQTT セキュリティオンプレミスとオンプレミスの安全な通信のためにホストMQTT サーバーインスタンスお問い合わせ



信頼されるIoT環境をセットアップ!

セキュアなMQTT通信の設計

セキュアなMQTTブローカーをシステムの中核に展開し始めます。