Сбой Mosquitto Bridge из-за неправильной версии ssl - PullRequest
0 голосов
/ 07 ноября 2018

В настоящее время я пытаюсь настроить систему 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

Кто-нибудь может дать мне подсказку, что я делаю неправильно или что я могу сделать для дальнейшей отладки проблемы?

...