Я пытаюсь (лучшее слово здесь) настроить обмен с брокером сообщений MQTT v3.1 mosquitto ovr TLS, используя самозаверяющую открытую сертификацию SSL.Достаточно просто ... Обычно.Я думаю?
Раньше у меня был скрипт, использующий paho-mqtt, но я дошел до командной строки консоли, пытаясь минимизировать интерпретацию.Я следовал некоторым основным шагам этого сайта https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-the-mosquitto-mqtt-messaging-broker-on-ubuntu-16-04 (если я использую свой сервер на Ubuntu 18, но он не должен сильно меняться ...).
Имея один терминал на сервере с этим
mosquitto_sub -h IP.ad.dr.ess -t test -u "username" -P 'password'
Я попробовал на сервере следующее
mosquitto_pub -h IP.ad.dr.ess -t test -m "hello world" -u 'username' -P 'password'
, оно работало.Тогда на моем компьютере тоже самое, тоже работало.Итак, сервер запущен и работает.Ура!
Теперь к TLS: рукава, готовые к тому, чтобы ребенок работал безопасно, пробуя эту команду на моем компьютере:
mosquitto_pub -h IP.ad.dr.ess -t test -m "hello world with TLS" -p 8883 --cafile /etc/mosquitto/certs/brokerCertificate.crt -u 'username' -P 'password'
При попытке ввода командной строки с моего компьютера, яОчевидно, ожидается, что будет привет мир с TLS, но вместо этого получит ошибку тайм-аута операции.Так что ошибка на самом деле не помогает.
Проверка моего приятеля в LogFile в /var/log/mosquitto/mosquitto.log ... Ничего.Так что в основном я думаю, что он даже не идет к брокеру.
Пробовал ту же команду на самом сервере, она сработала после смены владельца файла на мое имя пользователя вместо root.Что-то вроде обмана, но я понимаю, почему.За исключением того, что чит не будет работать с моего компьютера, имя пользователя на этом компьютере не существует ...
Я искал снова и снова, предлагая идеи, которые я пытался обобщить здесь, напрасно,
Да, и прежде, чем я забыл: - Я разрешил порты ufw 8883 и 1883. - Сертификация брокера была создана с использованием в качестве общего имени IP.ad.dr.ess с использованием метода openssl (по крайней мере, я полагал, чтобыл openssl, как показано ниже https://mcuoneclipse.com/2017/04/14/enable-secure-communication-with-tls-and-the-mosquitto-broker/)
Редактировать: По мере необходимости: mosquitto.conf и последние строки /var/log/mosquitto/mosquitto.log
listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd
#logging
log_type all
log_dest stdout
log_dest file /var/log/mosquitto/mosquitto.log
listener 8883
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/brokerCertificate.crt
keyfile /etc/mosquitto/certs/server.key
tls_version tlsv1.2
sudo service mosquitto start
● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
Loaded: loaded (/etc/init.d/mosquitto; generated)
Active: active (running) since Thu 2019-05-23 13:10:56 EDT; 2s ago
Docs: man:systemd-sysv-generator(8)
Process: 25157 ExecStop=/etc/init.d/mosquitto stop (code=exited, status=0/SUCCESS)
Process: 25457 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCCESS)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/mosquitto.service
└─25463 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
Это приглашение сразу после в файле журнала:
1558631456: mosquitto version 1.6.2 starting