Я установил mosquitto на ПК с Win7, и я хочу, чтобы он мог прослушивать многие порты, поэтому я модифицировал mosquitto.conf в соответствии с документацией mosquitto и некоторыми учебными пособиями / примерами, найденными в Интернете. Это мои модификации, сделанные на mosquitto.conf:
# Plain MQTT protocol
listener 1883
# MQTT over TLS/SSL
listener 8883
protocol mqtt
require_certificate false
# MQTT over TLS/SSL with certificates
listener 8884
protocol mqtt
require_certificate true
certfile cert.pem
cafile chain.pem
keyfile privkey.pem
# Plain WebSockets configuration
listener 9001
protocol websockets
# WebSockets over TLS/SSL
listener 9883
protocol websockets
require_certificate true
cafile mosquitto/ca.crt
certfile mosquitto/hostname.crt
keyfile mosquitto/hostname.key
# Log system configuration
log_type all
#log_dest file C:/Dati/mosquitto/mosquitto.log
log_facility 5
log_type error
log_type warning
log_type notice
log_type information
к сожалению, с этими модификациями больше ничего не работает.
Итак, мне нужно изучить рабочий пример, чтобы понять, что правильно, а что нет.
Моя цель - заставить комара слушать порт 1883 (обычный MQTT без шифрования) 8883 (через TLS 1.2, но без использования сертификатов) 8884 (TLS 1.2 с использованием сертификатов) 9001 (простые веб-сокеты) и, наконец, 9883 (веб-сокеты, требующие сертификатов.
Я подозревал, что с сертификатами что-то не так, но следовал указаниям в отчете test.mosquitto.org:
Сервер прослушивает следующие порты:
- 1883: MQTT, незашифрованный
- 8883: MQTT, зашифровано
- 8884: MQTT, зашифровано, требуется сертификат клиента
- 8080: MQTT через WebSockets, в незашифрованном виде
- 8081: MQTT через WebSockets, зашифровано
так что, похоже, не требуется сертификат клиента для подключения к порту 8883.
UPDATE
Наконец, запустив mosquitto как простое приложение, а не как службу Windows, я вижу журнал stdio / stderr, и вот результат:
Вот как я начинаю комаров:
mosquitto -c mosquitto.conf -v
это команда тестирования для проверки комара на порту 8883 и ее результат:
mosquitto_pub --cafile C:\Dati\mosquitto\ca.crt -h 192.168.1.2 -t "test" -m "message" -p 8883
Error: Unknown error.
это тестовая команда для проверки комара на порту 1883 (последние строки в файле журнала):
mosquitto_pub -h 192.168.1.2 -t "test" -m "message" -p 1883
и это файл журнала:
1559207712: mosquitto version 1.5.8 starting
1559207712: Config loaded from mosquitto.conf.
1559207712: Opening ipv6 listen socket on port 8883.
1559207712: Opening ipv4 listen socket on port 8883.
1559207712: Opening ipv6 listen socket on port 1883.
1559207712: Opening ipv4 listen socket on port 1883.
1559207731: New connection from 192.168.1.2 on port 8883.
1559207731: Socket error on client <unknown>, disconnecting.
1559207789: New connection from 192.168.1.2 on port 1883.
1559207789: New client connected from 192.168.1.2 as MQTT_FX_Client (c1, k60).
1559207789: No will message specified.
1559207789: Sending CONNACK to MQTT_FX_Client (0, 0)
1559207808: Received DISCONNECT from MQTT_FX_Client
1559207808: Client MQTT_FX_Client disconnected.
1559207902: New connection from 192.168.1.2 on port 8883.
1559207902: Socket error on client <unknown>, disconnecting.
1559207902: New connection from 192.168.1.2 on port 8883.
1559207902: Socket error on client <unknown>, disconnecting.
1559207949: New connection from 192.168.1.2 on port 8883.
1559207949: Socket error on client <unknown>, disconnecting.
1559207949: New connection from 192.168.1.2 on port 8883.
1559207949: Socket error on client <unknown>, disconnecting.
1559207956: New connection from 192.168.1.2 on port 8883.
1559207956: Socket error on client <unknown>, disconnecting.
1559207956: New connection from 192.168.1.2 on port 8883.
1559207956: Socket error on client <unknown>, disconnecting.
1559207994: New connection from 192.168.1.2 on port 8883.
1559207994: Socket error on client <unknown>, disconnecting.
1559208345: New connection from 192.168.1.2 on port 1883.
1559208345: New client connected from 192.168.1.2 as mosqpub|7544-NOTEBOOK (c1, k60).
1559208345: No will message specified.
1559208345: Sending CONNACK to mosqpub|7544-NOTEBOOK (0, 0)
1559208345: Received PUBLISH from mosqpub|7544-NOTEBOOK (d0, q0, r0, m0, 'test', ... (7 bytes))
1559208345: Received DISCONNECT from mosqpub|7544-NOTEBOOK
1559208345: Client mosqpub|7544-NOTEBOOK disconnected.
Я сделал некоторые изменения в mosquitto.conf, пытаясь лучше понять ситуацию, и также обнаружил некоторые интересные вещи, используя mosquitto_pub, это соответствующая часть mosquitto.conf, которую я модифицировал:
# Log system configuration
log_type all
#log_dest file C:\Dati\mosquitto\mosquitto.log now stderr
# MQTT over TLS/SSL
listener 8893
protocol mqtt
allow_anonymous true
require_certificate false
cafile C:\Dati\mosquitto\ca.crt
certfile C:\Dati\mosquitto\server.crt
keyfile C:\Dati\mosquitto\server.key
# MQTT plain
listener 1893
protocol mqtt
на практике я запустил 2 новых прослушивателя на нестандартных портах, чтобы быть уверенным, что на них влияет только конфигурация в mosquitto.conf, поэтому без особых фантазий ... 1883 -> 1893 и 8883 -> 8893.
Затем, теперь выполняя mosquitto_pub без SSL, это (правильный) результат:
mosquitto_pub -h 192.168.1.2 -i "MQTT_FX_Client" -t "test" -m "message" -p 1893 -d
Client MQTT_FX_Client sending CONNECT
Client MQTT_FX_Client received CONNACK (0)
Client MQTT_FX_Client sending PUBLISH (d0, q0, r0, m1, 'test', ... (7 bytes))
Client MQTT_FX_Client sending DISCONNECT
и это (неправильный) результат выполнения mosquitto_pub с SSL на порту 8893:
mosquitto_pub --cafile C:\Dati\mosquitto\ca.crt -h 192.168.1.2 -i "MQTT_FX_Client" -t "test" -m "message" -p 8893 -d
Client MQTT_FX_Client sending CONNECT
OpenSSL Error: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
Error: A TLS error occurred.
, но использование MQTT.fx работает со следующими параметрами:
тип профиля: MQTT Broker
Адрес брокера: 192.168.1.2
Порт брокера: 8893
Идентификатор клиента§: MQTT_FX_Client
Включить SSL / TLS: да
Протокол TLSv1.2
Файл сертификата CA: C: \ Dati \ mosquitto \ ca.crt
все работает как указано в журнале:
1559231176: New connection from 192.168.1.2 on port 8893.
1559231177: New client connected from 192.168.1.2 as MQTT_FX_Client (c1, k60).
1559231177: No will message specified.
1559231177: Sending CONNACK to MQTT_FX_Client (0, 0)
Мне кажется, что параметры MQTT.fx и mosquitto_pub одинаковы, но ... в любом случае что-то идет не так, что ... что еще?
Спасибо,
Massimo