В настоящее время я пытаюсь настроить систему MQTT, в которой у меня есть центральный брокер (брокер 1), работающий на сервере и требующий шифрования TLS, и локальный брокер (брокер 2), который доступен только в моей локальной сети и не требует любой вид шифрования или аутентификации.
Мои «вещи» будут публиковаться и подписываться на Брокер 2, который должен быть настроен как мост к Брокеру 1, чтобы мои вещи могли публиковать и подписываться на темы в Брокере 1 без реализации самого TLS.
Брокер 1 - это экземпляр Mosquitto, работающий на сервере Cent Os 6 (мое Uberspace), и для него настроено требование аутентификации и шифрования с использованием сертификата Lets Encrypt.
Mosquitto.conf:
port <port>
persistence true
persistence_location /home/drparrot/mosquitto/var/lib/mosquitto/
log_dest topic
log_type error
log_type warning
log_type notice
log_type information
certfile /home/drparrot/.config/letsencrypt/live/<url>/cert.pem
cafile /home/drparrot/.config/letsencrypt/live/<url>//chain.pem
keyfile /home/drparrot/.config/letsencrypt/live/<url>/ /privkey.pem
allow_anonymous false
connection_messages true
log_timestamp true
Broker 2 - это тоже москит, работающий на малиновом пи, который подключен к моему локальному WiFi.
Это настроено как мост к Брокеру 1.
mosquitto.conf:
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
log_type all
connection uberspace-bridge
address <url>:<port>
topic # out 0
topic # in 0
clientid <id>
username <username>
password <password>
bridge_capath /etc/ssl/certs/
Когда я запускаю Broker 2, я могу проверить из файла журнала, что он пытается подключиться к Broker 1, но не может выполнить следующее сообщение:
1541447922: Bridge <id> sending CONNECT
1541447922: OpenSSL Error: error:1417110A:SSL routines:tls_process_server_hello:wrong ssl version
1541447922: Socket error on client local.<id>, disconnecting.
Однако, если я попытаюсь подключиться от Raspberry Pi, размещающего Broker 2, к серверу, на котором размещен Broker 1, через
openssl s_client -connect <url>:<port>
все работает нормально, так что я думаю, что все мои сертификаты настроены правильно, и мои открытые версии ssl на raspberry и на сервере в целом совпадают. Более того, я могу подключиться / опубликовать / подписаться на брокер 1 со своего компьютера с Windows, используя MQTT.fx
Кто-нибудь может дать мне подсказку, что я делаю неправильно или что я могу сделать для дальнейшей отладки проблемы?