Miscellaneous前書きMQTTは、「モノのインターネット」デバイスへの軽量なパブリッシュ/サブスクライブ通信を提供するために設計されたマシンツーマシンメッセージングプロトコルです。一般的には、車両のジオトラッキング車両、ホームオートメーション、環境センサーネットワーク、ユーティリティスケールのデータ収集に使用されます。Mosquittoは人気のあるMQTTサーバー(またはMQTT用語では_broker_)であり、優れたコミュニティサポートがあり、インストールと構成が簡単です。このチュートリアルでは、Mosquittoをインストールし、SSLを使用してパスワードで保護されたMQTT通信を保護するようにブローカーを設定します。前提条件このチュートリアルを開始する前に、次のものが必要です。9サーバーセットアップチュートリアル。DNS製品ドキュメントに記載されている、サーバーを指すドメイン名。このチュートリアルでは、全体で「++」を使用します。+」として追加できます。前の前提条件の手順で構成したのと同じドメインを使用してください。9には、デフォルトのソフトウェアリポジトリにかなり新しいバージョンのMosquittoが含まれているため、そこからインストールできます。+`を使用してパッケージリストを更新します。install`を使用してMosquittoをインストールします。mosquitto-clientsデフォルトでは、Debianはインストール後にMosquittoサービスを開始します。デフォルトの構成をテストしましょう。インストールしたMosquittoクライアントの1つを使用して、ブローカーのトピックをサブスクライブします。_Topics_は、メッセージを発行および購読するラベルです。トピックの配置方法は、あなたとあなたのニーズ次第です。このチュートリアルでは、簡単なテストトピックを使用して構成の変更をテストします。サーバーに2回ログインすると、2つの端末が並んでいます。+`を使用してテストトピックにサブスクライブします。+」を押しても出力は表示されません。他の端末に切り替えて、メッセージを公開します。`オプションを使用してメッセージを指定します。*ポップアップが表示されます。+」を終了しますが、サーバーへの接続は開いたままにします。手順5の別のテストで再び使用します。次に、パスワードベースの認証を使用してインストールを保護します。ステップ2-MQTTパスワードの構成パスワードを使用するようにMosquittoを設定しましょう。`という特別なパスワードファイルを生成するユーティリティが含まれています。/etc/mosquitto/passwd次に、Mosquittoの新しい構成ファイルを開き、このパスワードファイルを使用してすべての接続にログインを要求するように指示します。/etc/mosquitto/conf.d/default.confこれにより、空のファイルが開きます。/etc/mosquitto/passwdファイルの最後に必ず末尾の改行を残してください。+`行はMosquittoにユーザーとパスワードの情報を探す場所を伝えます。ファイルを保存して終了します。次に、Mosquittoを再起動して、変更をテストする必要があります。refused.パスワードを再試行する前に、2番目のターミナルウィンドウに再度切り替えて、今回はユーザー名とパスワードを使用して「テスト」トピックにサブスクライブします。""接続して座って、メッセージを待つ必要があります。定期的にテストメッセージを送信するため、このターミナルを開いたままにしてチュートリアルの残りの部分で接続しておくことができます。ユーザー名とパスワードを使用して、もう一方の端末でメッセージを公開します。""メッセージはステップ1のように通過するはずです。Mosquittoにパスワード保護を追加しました。残念ながら、暗号化されていないパスワードをインターネット経由で送信しています。次に、MosquittoにSSL暗号化を追加して、これを修正します。Encrypt証明書の保存場所をMosquittoに伝える必要があります。以前に開始した構成ファイルを開きます。/etc/mosquitto/conf.d/default.confファイルの最後に以下を貼り付けて、追加した2行を残します。/etc/letsencrypt/live//privkey.pem繰り返しになりますが、ファイルの最後に必ず末尾の改行を残してください。」ブロックを設定に追加しています。`上のデフォルトのMQTTリスナーを更新します。これはこれまで接続してきたものです。`は標準の暗号化されていないMQTTポートです。+」部分は、Mosquittoにこのポートをローカルホストインターフェースにのみバインドするように指示するため、外部からはアクセスできません。いずれにせよ、外部リクエストはファイアウォールによってブロックされていたはずですが、明示するのは良いことです。`に暗号化されたリスナーを設定します。SSLの標準ポートであり、MQTTSとも呼ばれます。Encryptファイルを指し、暗号化された接続をセットアップします。ファイルを保存して終了し、Mosquittoを再起動して設定を更新します。mosquittoファイアウォールを更新して、ポート「8883」への接続を許可します。+`を使用して再度テストします。`の代わりに完全なホスト名を使用していることに注意してください。+」への安全な接続を試みると、ホスト名が証明書のホスト名と一致しないというエラーが表示されます(どちらも同じMosquittoサーバーを指している場合でも)。`のSSLを有効にし、ルート証明書を探す場所を指示します。OS、Windowsなどではパスが異なります。Encrypt認証局によって適切に署名されたことを確認します。`+に接続している場合でもSSL接続を試行しないことに注意することが重要です。helloが再び表示されます。MQTTプロトコルを拡張してWebソケットで動作するようにしたい場合は、最後の手順に従ってください。ステップ4-Websocket上のMQTTの構成(オプション)Webブラウザ内からJavaScriptを使用してMQTTを話すために、プロトコルは標準のWebソケット上で動作するように適合されました。この機能が必要ない場合は、この手順をスキップできます。+`ブロックを追加する必要があります。/etc/mosquitto/conf.d/default.confファイルの最後に、次を追加します。/etc/letsencrypt/live//privkey.pem繰り返しになりますが、ファイルの最後に必ず末尾の改行を残してください。`行を除いて、前のブロックとほとんど同じです。8083+」が最も一般的です。ファイルを保存して終了し、Mosquittoを再起動します。mosquittoここで、ファイアウォールのポート「8083」を開きます。8083この機能をテストするには、ブラウザベースの公開MQTTクライアントを使用します。Client]はシンプルで簡単に使用できます。[ブラウザでPahoクライアントを開きます]。[Pahoクライアント画面]接続情報を次のように入力します。*は、Mosquittoサーバーのドメイン「++」である必要があります。+`でなければなりません。*のままにすることができます。*のままにすることができます。ユーザー名*はMosquittoユーザー名でなければなりません。*は、選択したパスワードです。残りのフィールドはデフォルト値のままにすることができます。*接続*を押すと、PahoブラウザーベースのクライアントがMosquittoサーバーに接続します。*セクションにメッセージを入力します。次に、*公開*を押します。mosquitto_sub`ターミナルに表示されます。結論これで、セキュリティで保護され、パスワードで保護され、SSLで保護されたMQTTサーバーをセットアップしました。これは、どんなプロジェクトを考えても、堅牢で安全なメッセージングプラットフォームとして機能します。MQTTプロトコルで適切に機能する一般的なソフトウェアとハ​​ードウェアには次のものがあります。OwnTracks、携帯電話にインストールできるオープンソースの地理追跡アプリ。OwnTracksは定期的に位置情報をMQTTサーバーに報告します。MQTTサーバーは、マップに保存して表示したり、位置に基づいてアラートを作成してIoTハードウェアをアクティブにしたりできます。Node-REDは、モノのインターネットを「配線」するためのブラウザベースのグラフィカルインターフェイスです。あるノードの出力を別のノードの入力にドラッグすると、フィルターを介して、さまざまなプロトコル間で、データベースなどに情報をルーティングできます。MQTTはNode-REDで非常によくサポートされています。ESP8266は、MQTT機能を備えた安価なwifiマイクロコントローラーです。温度データをトピックに公開するために配線するか、気圧のトピックにサブスクライブして、嵐が来ているときにブザーを鳴らすことができます!これらは、MQTTエコシステムの一般的な例のほんの一部です。プロトコルを話すハードウェアとソフトウェアがはるかに多くあります。お気に入りのハードウェアプラットフォームまたはソフトウェア言語を既にお持ちの場合は、MQTT機能を備えている可能性があります。