ブログ

プラン
簡単AI/IoT
やってみようAI/IoT!
2025-08-07

AI/IoTを活用した業務自動化の鍵はMQTTにあり!セキュアなMQTT環境の構築法

AI/IoTを活用した業務自動化の鍵はMQTTにあり!セキュアなMQTT環境の構築法

データ活用が進む今、センサーや機器からリアルタイムで情報をやり取りできるMQTTのような通信技術が、さまざまな業務で活用されはじめています。特に、IoTの導入や業務の自動化を検討している企業では、こうした仕組みが欠かせない存在になりつつあります。一方で、「通信の安全性が心配」「外部からの不正アクセスを防ぎたい」といった声も多く聞かれます。

そこで本記事では、オープンソースのツール「Mosquitto」を使って、「クライアント証明書」を活用した安全な通信の仕組み(TLS)を導入する方法を、やさしく・具体的な手順でご紹介します。

セキュリティに配慮したMQTTの活用を検討中の方に、ぜひ読んでいただきたい内容です。

概要

〜ステップバイステップで学ぶ、MQTT Mosquitto ブローカーのセキュアな構築法〜

このチュートリアルでは、オープンソースソフトウェア「Mosquitto」を使って、Linuxマシン上にMQTTブローカーをセットアップし、安全に運用する方法をご紹介します。今回は、AWSEC2上のUbuntu 20.04サーバーを使う想定ですが、他のLinuxディストリビューションやクラウドプロバイダーでも応用可能です。

⚠️作業を進める前に、Linuxサーバーへの管理者(root)アクセス権があることを確認してください。

ステップ1:サーバーに接続する

まずは、サーバーにSSHで接続します。AWS EC2を使っている場合、以下のコマンドで接続できます(your-key.pemやyour-server-ipは各自の環境に置き換えてください):

ssh -i your-key.pem ubuntu@your-server-ip

ステップ2:パッケージの更新

作業前に、システムのパッケージを最新の状態にしておきましょう。

sudo apt-get update -y
sudo apt-get upgrade -y

ステップ3:Mosquittoのインストール

MosquittoはUbuntuの標準リポジトリに含まれているので、次のコマンドでインストール可能です。

sudo apt-get install mosquitto mosquitto-clients -y

ステップ4:Mosquittoの設定

Mosquittoの設定ファイルは /etc/mosquitto/mosquitto.conf にあります。エディタで開きます:

sudo nano /etc/mosquitto/mosquitto.conf

デフォルトではポート1883を使用しています。ポートを変更したい場合は以下の行を編集します:

listener 1883

WebSocket経由のMQTT通信を有効にするには、以下を追記します:

listener 9001
protocol websockets 

編集後は CTRL+X → Y → ENTER で保存して終了します。

ステップ5:Mosquitto を起動し自動起動を設定

sudo systemctl start mosquitto
sudo systemctl enable mosquitto

ステップ6:クラウド側のポートを開放

クライアントが接続できるように、クラウド側のセキュリティグループでポート1883と9001を開放します(AWSの場合、EC2のセキュリティグループ設定でインバウンドルールを追加)。

ステップ7:ブローカーの動作確認

次のコマンドで、test トピックに対して購読・公開して動作確認ができます。

購読

mosquitto_sub -h localhost -t test

別ターミナルからメッセージを送信

mosquitto_pub -h localhost -t test -m "hello world"

ステップ8:ユーザー認証の設定

パスワードファイルを作成します(username は任意):

sudo mosquitto_passwd -c /etc/mosquitto/passwd username

設定ファイルに以下を追記:

allow_anonymous false
password_file /etc/mosquitto/passwd

Mosquittoを再起動:

sudo systemctl restart mosquitto

ユーザー認証つきでの接続例:

mosquitto_sub -h localhost -t test -u "username" -P "password"
mosquitto_pub -h localhost -t test -m "hello world" -u "username" -P "password" 

TLS証明書でセキュアに通信するには

TLS(TransportLayer Security)を使用することで、MQTT通信の盗聴や改ざんを防止できます。

このステップでは以下の3種類の証明書を作成・使用します:

  • 認証局(CA)証明書
  • サーバー証明書
  • クライアント証明書

ステップ1:OpenSSLのインストール

sudo apt-get install openssl -y

ステップ2:認証局(CA)の作成

mkdir ~/certs
cd ~/certs
openssl genrsa -out ca.key 2048
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

ステップ3:サーバー証明書の作成

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650

ステップ4:クライアント証明書の作成

openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 3650

ステップ5:Mosquitto の TLS 設定

設定ファイルに以下を追記:

listener 8883
cafile /home/ubuntu/certs/ca.crt
certfile /home/ubuntu/certs/server.crt
keyfile /home/ubuntu/certs/server.key
require_certificate true

再起動:

sudo systemctl restart mosquito

ステップ6:TLS設定の動作確認

mosquitto_pub -h localhost -p 8883 --cafile ~/certs/ca.crt --cert ~/certs/client.crt --key ~/certs/client.key -t test -m "hello tls" -d
mosquitto_sub -h localhost -p 8883 --cafile ~/certs/ca.crt --cert ~/certs/client.crt --key ~/certs/client.key -t test -d

トラブルシューティング

Mosquittoが起動に失敗した場合:

systemctl status mosquitto.service
journalctl -xeu mosquitto.service

エラー原因がファイルのパーミッションである場合、ca.crt などを /etc/mosquitto/certs/ に移動し、設定ファイルのパスも修正してください。

Gravioへの接続

Gravioは、MQTTプロトコルの可能性を活用しています。新しくセットアップしたMQTTブローカーをGravioのPubSub機能に接続し、あらゆる種類のソフトウェアプロセスに接続してトリガーを開始できます。MQTTは以下に接続できます。

  • ダッシュボード(Databox, Thinger, RRD, Thingsboardなど)
  • SMS
  • LINEメッセージング
  • GPS
  • Google Chromecast
  • Google Analytics
  • HTTPリクエストの作成
  • Microsoft Teams
  • Slack
  • …その他多数!

この記事は、Mediumブログにも掲載されています:

オンラインセミナーのご案内

Gravioの活用方法をご紹介する「オンラインセミナー」や「イベント出展」を定期的に開催しています。
👉最新の開催情報は、こちらからご覧いただけます。

お問い合わせのご案内

製品に関するご質問やご説明をご希望の方には、オンラインで対応いたします。
ぜひお気軽にお問い合わせください。👉お申し込みはこちら

Gravio を試す!まずは、Gravio Studioをダウンロード

Microsoftから入手App StoreからダウンロードMac App Store からダウンロード
業務の自動化・省力化・遠隔化これ1冊で丸わかり!まとめて読めるPDF版はこちら業務の自動化・省力化・遠隔化これ1冊で丸わかり!まとめて読めるPDF版はこちら
業務の自動化・省力化・遠隔化これ1冊で丸わかり!まとめて読めるPDF版はこちら業務の自動化・省力化・遠隔化これ1冊で丸わかり!まとめて読めるPDF版はこちら
業務の自動化・省力化・遠隔化これ1冊で丸わかり!まとめて読めるPDF版はこちら業務の自動化・省力化・遠隔化これ1冊で丸わかり!まとめて読めるPDF版はこちら
Gravio CO2測定パックで3密回避!50セット限定月額2,200円(税込)販売キャンペーン開催!わかりやすい大型表示、センサーと表示部は離して設置可能Gravio CO2測定パックで3密回避!50セット限定月額2,200円(税込)販売キャンペーン開催!わかりやすい大型表示、センサーと表示部は離して設置可能【画像認識AI編】ノーコードでAI/IoTを実現!「Gravio」製品紹介セミナー ~顔認証・混雑検知を実機デモでご紹介~ 2021.09.16(木)14:00-15:00 申込はこちら【画像認識AI編】ノーコードでAI/IoTを実現!「Gravio」製品紹介セミナー ~顔認証・混雑検知を実機デモでご紹介~ 2021.09.16(木)14:00-15:00 申込はこちらノーコードでAI/IoTを実現!「Gravio」製品紹介セミナー 2021.08.19(木)14:00-14:45 申込はこちらノーコードでAI/IoTを実現!「Gravio」製品紹介セミナー 2021.08.19(木)14:00-14:45 申込はこちらニューノーマル時代にこそオフィスの可視化が必要に!安心・安全なワークスペースを生み出すIoT活用最前線ニューノーマル時代にこそオフィスの可視化が必要に!安心・安全なワークスペースを生み出すIoT活用最前線