1. 概要
前ページで作成した証明書を利用して、「mosquitto」に「SSH」の設定を行います。
2. mosquitto 設定
「mosquitto」の設定を行います。
sudo vi /etc/mosquitto/mosquitto.conf
下記の行を加えます。
listener 8883
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
require_certificate true
use_identity_as_username true
上記は、上から、下記の定義を行っています。
・SSH 用のポート番号
・CA 証明書
・サーバー証明書
・サーバー秘密鍵
・クライアント認証を必須に
・クライアント証明書 CN をユーザー名として使用
再起動します。
sudo systemctl restart mosquitto
3. クライアント接続
クライアントマシンのカレントディレクトリに、サーバマシンから下記のファイルをコピーして。
/etc/mosquitto/certs/ca.crt
/etc/mosquitto/certs/client.crt
/etc/mosquitto/certs/client.key
所有権を設定します。
ログインユーザを仮に「hogehoge」として。
sudo chown hogehoge:hogehoge ca.crt client.crt client.key
「subcriber」を起動します。
mosquitto_sub -h ip_address -p 8883 -t test/topic -i client --cafile ca.crt --cert client.crt --key client.key -d
Client client sending CONNECT
Client client received CONNACK (0)
Client client sending SUBSCRIBE (Mid: 1, Topic: test/topic, QoS: 0, Options: 0x00)
Client client received SUBACK
Subscribed (mid: 1): 0
もう一台端末を開いて、「publisher」を起動します。
mosquitto_pub -h ip_address -p 8883 -t test/topic -m "message send" -i client --cafile ca.crt --cert client.crt --key client.key -d
Client client sending CONNECT
Client client received CONNACK (0)
Client client sending PUBLISH (d0, q0, r0, m1, 'test/topic', ... (12 bytes))
Client client sending DISCONNECT
この時点で、「subcriber」側に。
Client client sending CONNECT
Client client received CONNACK (0)
Client client sending SUBSCRIBE (Mid: 2, Topic: test/topic, QoS: 0, Options: 0x00)
Client client received SUBACK
Subscribed (mid: 2): 0
と表示されれば、疎通テストは正常です。
6. 参考サイト
本ページは、「ChatGPT」軍曹および下記のサイトを参考にさせていただきました。
「【Mosquitto】MQTTブローカの構築・動作確認 (ユーザ認証・TLS暗号化まで) #mqtt」