2017-02-16 29 views
0

Мне нужна ваша помощь на мостике MQTT. В настоящее время я могу успешно подключить локальный MQTT к обмену сообщениями Watson IOT, но только в режиме защиты, т.е. 1883 порт. Поэтому я получил сертификат сервера по этой командеБезопасный мост между местным комаром и Watson-iot

openssl s_client -connect myorg.messaging.internetofthings.ibmcloud.com:8883 -showcerts > server.crt 

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

mosquitto.conf

 
connection bridge-to-watsoniot 
bridge_insecure false 
bridge_certfile /home/pi/server.crt 
address myorg.messaging.internetofthings.ibmcloud.com:8883 
cleansession false 
try_private false 
bridge_attempt_unsubscribe false 
notifications true 
notification_topic iot-2/type/Raspberry/id/my_mqtt_gateway/evt/status/fmt/raw 
remote_username use-token-auth 
remote_password *************** 
remote_clientid g:myorg:Raspberry:my_mqtt_gateway 
topic iot-2/type/+/id/+/cmd/+/fmt/+ in iot-2/type/+/id/+/cmd/+/fmt/+ 
topic iot-2/type/+/id/+/evt/+/fmt/+ out iot-2/type/+/id/+/evt/+/fmt/+ 
connection_messages true 

mosqutto.log

 
1487240737: mosquitto version 1.4.10 (build date Thu, 25 Aug 2016 10:12:09 +0100) starting 
1487240737: Config loaded from mosquitto.conf. 
1487240737: Opening ipv4 listen socket on port 1883. 
1487240737: Opening ipv6 listen socket on port 1883. 
1487240737: Connecting bridge bridge-to-watsoniot (myorg.messaging.internetofthings.ibmcloud.com:8883) 
1487240738: New connection from 127.0.0.1 on port 1883. 
1487240738: New client connected from 127.0.0.1 as mqttjs_93a3961c (c1, k10, u'foo'). 
1487240738: New connection from 127.0.0.1 on port 1883. 
1487240738: New client connected from 127.0.0.1 as mqttjs_618c88ab (c1, k10). 
1487240739: Socket error on client local.g:myorg:Raspberry:my_mqtt_gateway, disconnecting. 
1487240747: New connection from 192.168.82.130 on port 1883. 
+0

Сертификат IoT можно скачать здесь, если вы хотите подтвердить, что он соответствует полученной вами команде openssl. https://github.com/ibm-watson-iot/iot-python/blob/master/src/ibmiotf/messaging.pem – ValerieLampkin

+0

Я сравнил его с моим и обнаружил, что у моего файла отсутствует один сертификат из 3. Спасибо за указатель. Это помогло. –

ответ

0

директива bridge_certfile для стороны клиента сертификата для локального брокера, чтобы использовать для аутентификации это самостоятельно с помощью пульта дистанционного брокера. Вам не нужно будет подключаться к Watson IoT.

Вы должны использовать bridge_cafile или bridge_capath, чтобы указать сертификат ЦС, который подписал сертификат Watson IoT, чтобы местный брокер мог убедиться, что удаленный конец - это тот, кто они говорят.

+0

Благодарим вас за ответ. Я переключился на bridge_cafile с сертификатом, который Валери указал вместо моего, и теперь он отлично работает. –